Comment copier un fichier dans plusieurs répertoires en une seule commande sous Linux
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 dans plusieurs emplacements différents? C'est aussi facile, et nous allons vous montrer comment faire cela avec une commande.
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 /
Cependant, nous pouvons faire la même tâche avec une seule commande:
echo dir1 dir2 dir3 | xargs -n 1 cp fichier1
Voici comment cette commande fonctionne. le écho
commande écrit normalement à l'écran. Cependant, dans ce cas, nous voulons alimenter la sortie du écho
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 écho
commande à 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 est exécuté.
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
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 automatiquement remplacé. On ne vous demandera pas si vous souhaitez remplacer le fichier. (Normalement, lorsque vous utilisez le cp
Pour copier un fichier à un seul endroit, vous pouvez ajouter le -je
possibilité de demander si vous souhaitez remplacer un fichier existant. Cependant, le -je
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 voudrez peut-être éviter d'utiliser les ressources nécessaires pour copier et remplacer le fichier. La commande suivante ajoute le -n
option, et ne copiera pas le fichier dans une destination indiqué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
Tapez man echo, man xargs ou man cp sur la ligne de commande sous Linux pour plus d'informations sur ces commandes..