Dans ce bref guide, nous expliquerons comment copier un fichier dans plusieurs répertoires à partir de la ligne de commande en utilisant find
, cp
, echo
, xargs
et tee
commandes sous Linux.
L'autre jour, je voulais copier des vidéos dans différents dossiers de mon bureau Arch Linux. Comme vous le savez déjà, nous pouvons facilement le faire en faisant un clic droit sur le fichier, sélectionnez Copy
option dans le menu contextuel et collez-la dans le répertoire/dossier de destination.
Cependant, j'aimerais savoir s'il existe un autre moyen de copier le fichier dans plusieurs répertoires en une seule fois . J'ai pensé que cela aiderait quand je veux copier un seul fichier dans plusieurs répertoires différents à la fois. J'ai fait quelques recherches sur le Web et j'ai trouvé les solutions suivantes.
Avertissement important :
Veuillez noter que les commandes suivantes ne demanderont aucune confirmation. S'il existe un fichier portant le même nom dans le répertoire cible, il sera remplacé automatiquement.
Si vous débutez avec Linux, je vous suggère de tester les commandes sur n'importe quelle machine de test avant de commencer à les utiliser en production. De cette façon, vous pouvez éviter la perte inutile de données.
Copiez un fichier dans plusieurs répertoires à partir de la ligne de commande sous Linux
J'ai un fichier texte appelé ostechnix.txt
dans mon répertoire personnel, et je voulais le copier dans deux répertoires différents appelés Downloads
et Documents
en une seule fois.
Voyons d'abord comment copier le fichier dans plusieurs répertoires différents en utilisant find
et cp
commandes.
Méthode 1 :Utilisation des commandes find et cp
Nous pouvons copier un seul fichier dans plusieurs répertoires à la fois en utilisant find
et cp
commandes.
Le find
est une commande Unix et Linux pour rechercher des fichiers dans une hiérarchie de répertoires et la commande cp est utilisée pour copier des fichiers et des répertoires.
Pour copier un fichier nommé ostechnix.txt
vers ~/Downloads
et ~/Documents
répertoires utilisant find
et cp
commande, exécutez :
$ find ~/Downloads/ ~/Documents/ -maxdepth 0 -type d -exec cp ostechnix.txt {} \;
La commande ci-dessus copiera le fichier ostechnix.txt dans le répertoire courant vers ~/Downloads
et ~/Documents
répertoires.
Si vous ne spécifiez pas '-maxdepth 0'
option, le ostechnix.txt
le fichier sera copié dans ~/Downloads
, ~/Documents
répertoires ainsi que dans leurs sous-répertoires. Alors, n'oubliez pas de le préciser.
Comme je l'ai averti plus tôt, s'il existe déjà un fichier portant le même nom (c'est-à-dire ostechnix.txt
) dans l'un des répertoires de destination, la commande ci-dessus écrasera simplement le fichier existant sans aucune confirmation.
Si vous ne souhaitez pas écraser le fichier existant, vous pouvez utiliser -n
indicateur avec cp
commande comme ci-dessous :
$ find ~/Downloads/ ~/Documents/ -maxdepth 0 -type d -exec cp -n ostechnix.txt {} \;
Désormais, il ne remplacera pas le fichier cible s'il existe déjà dans les emplacements de destination.
Méthode 2 :Utilisation des commandes echo, xargs et cp
L'autre façon de copier des fichiers vers plusieurs emplacements consiste à utiliser echo
, xargs
et cp
commandes.
Comme vous le savez déjà, le cp
La commande est utilisée pour copier les fichiers et les répertoires, et xargs
La commande est utilisée pour créer et exécuter des lignes de commande à partir d'une entrée standard.
Pour copier un fichier dans plusieurs répertoires en utilisant echo
, xargs
et cp
commandes, exécutez :
$ echo ~/Downloads ~/Documents | xargs -n 1 cp ostechnix.txt
Décomposons la commande ci-dessus et voyons comment cela fonctionne.
Généralement, le echo
La commande imprime la chaîne ou le texte donné sur la sortie standard. Mais dans ce cas, nous dirigeons la sortie du echo
commande à xargs
. Ici, echo
commande enverra le chemin du répertoire à xargs
comme entrée.
xargs
la commande exécute le cp
commande deux fois et ajoute le chemin de chaque répertoire à la fin du cp
commande.
Les xargs
les commandes reçoivent deux arguments (c'est-à-dire le chemin du répertoire) de echo
commande. Le -n 1
option sur xargs
commande indique le xargs
pour n'ajouter qu'un seul de ces arguments à la fois.
Encore une fois, la commande ci-dessus remplace le fichier cible s'il existe déjà. Si vous ne voulez pas remplacer le fichier cible, ajoutez -n
drapeau dans la commande :
$ echo ~/Downloads ~/Documents | xargs -n 1 cp -n ostechnix.txt
Méthode 3 - Utilisation de la commande tee
Tee
est un utilitaire Unix et Linux utilisé pour lire à partir de l'entrée standard et écrire dans la sortie et les fichiers standard.
Maintenant, copions le ostechnix.txt fichier dans deux répertoires différents appelés /home/sk/Downloads
et /home/sk/Documents
.
Pour cela, lancez simplement la commande suivante depuis le Terminal :
$ tee /home/sk/Downloads/ostechnix.txt /home/sk/Documents/ostechnix.txt < /home/sk/ostechnix.txt
La commande ci-dessus copiera le ostechnix.txt
fichier du répertoire personnel vers ~/Downloads
et ~/Documents
répertoire.
Veuillez noter que tee
La commande écrira également l'entrée sur la sortie standard. Si vous ne voulez pas tee
commande pour ce faire, redirigez simplement la sortie standard vers /dev/null
comme indiqué ci-dessous.
$ tee /home/sk/Downloads/ostechnix.txt /home/sk/Documents/ostechnix.txt < /home/sk/ostechnix.txt >/dev/null
Encore une fois, je vous préviens. S'il existe déjà un fichier portant le même nom (c'est-à-dire ostechnix.txt
) dans les destinations, la commande ci-dessus écrasera le fichier existant.
Pour plus de détails, consultez les pages de manuel des commandes ci-dessus :
$ man cp
$ man find
$ man xargs
$ man echo
$ man tee
Conclusion
C'est ainsi que nous copions un fichier dans plusieurs répertoires à la fois à partir de la ligne de commande sous Linux. Il pourrait y avoir d'autres moyens, mais je pense que ces commandes sont très simples et faciles à utiliser.
Encore une fois, assurez-vous que les chemins de destination sont corrects et surtout assurez-vous qu'il n'existe aucun fichier portant le même nom à l'emplacement cible.
Lire connexe :
- Comment rechercher et copier certains types de fichiers d'un répertoire à un autre sous Linux
- Copier des types de fichiers spécifiques tout en conservant la structure des répertoires sous Linux
- Copier des fichiers et créer des répertoires cibles en même temps
- Comment copier des fichiers et modifier la propriété et les autorisations en même temps
- Comment conserver la propriété et les autorisations de fichiers intactes lors de la copie de fichiers ou de répertoires
- Reprendre les fichiers partiellement transférés via SSH à l'aide de Rsync
- Comment transférer rapidement des fichiers volumineux sur le réseau sous Linux et Unix
- Copie avancée – Ajouter une barre de progression aux commandes cp et mv sous Linux
- Copier le contenu du fichier dans le presse-papiers sans l'afficher