Copier un fichier avec la ligne de commande Linux est facile. Cependant, que se passe-t-il si vous souhaitez copier le même fichier vers plusieurs emplacements différents? C’est facile aussi, et nous allons vous montrer comment faire cela avec une seule commande.
Normalement, pour copier un fichier, vous utiliseriez le cp
commande, lien vers le fichier source et le répertoire de destination:
cp ~/Documents/FileToBeCopied.txt ~/TextFiles/
Pour le copier dans deux autres répertoires, de nombreuses personnes 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/
Cependant, nous pouvons faire la même tâche avec une seule commande:
echo dir1 dir2 dir3 | xargs -n 1 cp file1
Voici comment fonctionne cette commande. le echo
La commande écrit normalement à l’écran. Cependant, dans ce cas, nous voulons alimenter la sortie du echo
commande comme entrée de la xargs
commander. Pour ce faire, nous utilisons le symbole de tuyau ( |
) qui alimente la sortie d’une commande en entrée d’une autre. le xargs
commande exécutera le cp
commande trois fois, chaque fois en ajoutant le chemin du répertoire suivant qui lui est redirigé depuis le echo
commande jusqu’à la fin de la cp
commander. Il y a trois arguments transmis à xargs
, mais le -n 1
option sur le xargs
la commande lui dit de n’ajouter qu’un seul de ces arguments à la fois au cp
commande à chaque exécution.
Donc, pour rester fidèle à notre exemple précédent, les trois cp
Les commandes ci-dessus peuvent être combinées en une seule commande comme celle-ci:
echo ~/TextFiles/ ~/Dropbox /media/lori/MYUSBDRIVE | xargs -n 1 cp ~/Documents/FileToBeCopied.txt
Notez 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 remplacé automatiquement. On ne vous demandera pas si vous souhaitez remplacer le fichier. (Normalement, lorsque vous utilisez le cp
pour copier un fichier vers un emplacement unique, vous pouvez ajouter la commande -i
option pour demander si vous souhaitez remplacer un fichier existant. Cependant, le -i
est une option interactive (elle provoque la cp
pour demander une entrée à l’utilisateur) et vous ne pouvez pas utiliser une option interactive avec le cp
commande lors de son utilisation en conjonction avec xargs
.)
Une autre chose à considérer est que si vous copiez un très gros fichier, vous voudrez peut-être ajouter le no-clobber ( -n
) à l’option 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 voudrez peut-être éviter d’utiliser les ressources nécessaires pour copier et remplacer le fichier. La commande suivante ajoute le -n
et ne copiera pas le fichier vers une 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.txt
Type homme écho, homme xargs, ou homme cp sur la ligne de commande sous Linux pour plus d’informations sur l’une de ces commandes.