Page d'accueil » comment » 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

    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..