28Jun
Copier un fichier avec la ligne de commande Linux est facile. Cependant, que faire si vous voulez copier le même fichier à plusieurs endroits différents? C'est aussi facile, et nous allons vous montrer comment faire cela avec une seule commande.
Normalement, pour copier un fichier, vous devez utiliser la commande cp, en liant le fichier source et le répertoire de destination:
cp ~ /Documents/ FileToBeCopied.txt ~ /TextFiles/Pour le copier dans deux autres répertoires, beaucoup de gens lanceraient la commande deuxplus de fois, avec différentes destinations:
cp ~ /Documents/ FileToBeCopied.txt ~ /Dropbox/ cp ~ /Documents/ FileToBeCopied.txt /media/lori/MYUSBDRIVE/Cependant, nous pouvons faire la même tâche avec une seule commande:
echo dir1 dir2 dir3 |xargs -n 1 cp fichier1Voici comment cette commande fonctionne. La commande echo écrit normalement à l'écran. Cependant, dans ce cas, nous voulons envoyer la sortie de la commande echo en entrée de la commande xargs. Pour ce faire, nous utilisons le symbole pipe( |) qui alimente la sortie d'une commande en entrée d'une autre. La commande xargs exécutera la commande cp trois fois, en ajoutant à chaque fois le chemin du répertoire suivant depuis la commande echo jusqu'à la fin de la commande cp. Trois arguments sont passés à xargs, mais l'option -n 1 de la commande xargs lui indique d'ajouter un seul de ces arguments à la fois à la commande cp à chaque exécution.
Donc, pour coller avec notre exemple de plus tôt, les trois commandes cp séparées ci-dessus peuvent être combinées en une seule commande comme ceci:
echo ~ /TextFiles/ ~ / Dropbox /media/lori/ MYUSBDRIVE |xargs -n 1 cp ~ /Documents/ FileToBeCopied.txtNotez que si le fichier en cours de copie existe dans l'un des répertoires de destination spécifiés, le fichier de cette destination sera automatiquement remplacé.Vous ne serez pas demandé si vous souhaitez remplacer le fichier.(Normalement, lorsque vous utilisez la commande cp pour copier un fichier dans un emplacement unique, vous pouvez ajouter l'option -i pour demander si vous souhaitez remplacer un fichier existant, mais l'option -i est une option interactivecommande cp pour demander une entrée à l'utilisateur) et vous ne pouvez pas utiliser une option interactive avec la commande cp lorsque vous l'utilisez avec xargs.)
Une autre chose à considérer est que si vous copiez un très gros fichier, vous pourriezvoulez ajouter l'option no-clobber( -n) à la commande cp dans la commande unique ci-dessus. Cette option empêche automatiquement l'écrasement d'un fichier dans une destination s'il existe déjà.Si vous copiez un fichier très volumineux sur un réseau, il se peut qu'il soit lent et que vous souhaitiez éviter d'utiliser les ressources requises pour copier et remplacer le fichier. La commande suivante ajoute l'option -n et ne copie le fichier vers aucune destination répertoriée dans les arguments de l'instruction echo, si le fichier existe déjà dans cette destination.
echo ~ /TextFiles/ ~ / Dropbox /media/lori/ MYUSBDRIVE |xargs -n 1 cp -n ~ /Documents/ FileToBeCopied.txtTapez man echo, man xargs ou man cp sur la ligne de commande sous Linux pour plus d'informations sur l'une de ces commandes.