Comment copier un fichier dans plusieurs répertoires en une seule commande sous Linux

Comment copier un fichier dans plusieurs répertoires en une seule commande sous Linux
Comment copier un fichier dans plusieurs répertoires en une seule commande sous Linux

Vidéo: Comment copier un fichier dans plusieurs répertoires en une seule commande sous Linux

Vidéo: Comment copier un fichier dans plusieurs répertoires en une seule commande sous Linux
Vidéo: Comment Nettoyer Son PC : Etape 1 : Désinstallation des logiciels parasites - YouTube 2024, Avril
Anonim
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 facile aussi, et nous allons vous montrer comment faire cela avec une seule commande.
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 facile aussi, et nous allons vous montrer comment faire cela avec une seule 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 commande:
Cependant, nous pouvons faire la même tâche avec une commande:

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

Notez que si le fichier en cours de copie existe dans l’un des répertoires de destination spécifiés, le fichier correspondant à cette destination sera automatiquement remplacé. On ne vous demandera pas si vous souhaitez remplacer le fichier. (Normalement, lorsque vous utilisez le
Notez que si le fichier en cours de copie existe dans l’un des répertoires de destination spécifiés, le fichier correspondant à 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

-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

Conseillé: