Normalement, pour copier un fichier, vous utiliserez le
cp
commande, reliant 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 exécuteraient simplement la commande deux fois de plus, avec des destinations différentes:
cp ~/Documents/FileToBeCopied.txt ~/Dropbox/
cp ~/Documents/FileToBeCopied.txt /media/lori/MYUSBDRIVE/
echo dir1 dir2 dir3 | xargs -n 1 cp file1
Voici comment cette commande fonctionne. le
echo
commande écrit normalement à l'écran. Cependant, dans ce cas, nous voulons alimenter la sortie du
echo
commande en entrée du
xargs
commander. Pour ce faire, nous utilisons le symbole du tuyau (
|
) qui alimente la sortie d’une commande en entrée d’une autre. le
xargs
commande lancera le
cp
commande à trois reprises, en ajoutant chaque fois le chemin du répertoire suivant
echo
commande jusqu'à la fin de la
cp
commander. Trois arguments sont passés à
xargs
mais le
-n 1
option sur le
xargs
commande lui dit de n’ajouter qu’un de ces arguments à la fois à la
cp
commande à chaque fois qu'il s'exécute.
Donc, pour s'en tenir à notre exemple de plus tôt, les trois séparés
cp
Les commandes ci-dessus peuvent être combinées en une seule comme ceci:
echo ~/TextFiles/ ~/Dropbox /media/lori/MYUSBDRIVE | xargs -n 1 cp ~/Documents/FileToBeCopied.txt
cp
Pour copier un fichier à un seul endroit, vous pouvez ajouter le
-i
possibilité de demander si vous souhaitez remplacer un fichier existant. Cependant, le
-i
option est une option interactive (elle provoque la
cp
commande pour demander l’entrée de l’utilisateur) et vous ne pouvez pas utiliser une option interactive avec le
cp
commande lors de l'utilisation en conjonction avec
xargs
.)
Une autre chose à considérer est que si vous copiez un fichier très volumineux, vous voudrez peut-être ajouter le paramètre no-clobber (
-n
) option à la
cp
commande dans la commande unique ci-dessus. Cette option empêche automatiquement un fichier d'être écrasé dans une destination s'il y existe déjà. Si vous copiez un fichier très volumineux sur un réseau, cela peut être lent et vous pouvez éviter d'utiliser les ressources nécessaires pour copier et remplacer le fichier. La commande suivante ajoute le
-n
option, et ne copiera le fichier dans aucune des destinations répertoriées 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.txt