GNU/Linux >> Tutoriels Linux >  >> Linux

Copier un fichier dans plusieurs répertoires à partir de la ligne de commande sous Linux

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

Linux
  1. Comment supprimer des fichiers et des répertoires sous Linux à partir de la ligne de commande

  2. Rechercher des torrents à partir de la ligne de commande sous Linux

  3. Comment diviser et combiner des fichiers à partir de la ligne de commande sous Linux

  4. Commande Linux cp

  5. Importation CSV PostgreSQL depuis la ligne de commande

Comment extraire ou décompresser des fichiers tar.gz à partir de la ligne de commande Linux

Comment copier un fichier dans plusieurs répertoires sous Linux

Commande Ls sous Linux (liste des fichiers et des répertoires)

Commande Cp sous Linux (Copier des fichiers)

Commande Diff sous Linux avec exemples

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