GNU/Linux >> Tutoriels Linux >  >> Linux

Comment exclure une extension de fichier spécifique lors de la copie récursive de fichiers

Comme vous le savez peut-être déjà, ‘cp’ est le programme en ligne de commande sous Linux pour copier des fichiers et des répertoires. L'utilisation simple et la plus courante de 'cp' est le suivant :

$ cp file1 file2 file3... fileN target_folder/

Notez que la commande ci-dessus fonctionne aussi bien pour les fichiers que pour 'empty' Dossiers. Cela ne fonctionne pas pour les dossiers qui ont du contenu, que ce soit des fichiers ou des sous-dossiers.

Pour copier de tels dossiers, nous pouvons spécifier le '-r' drapeau (récursif).

$ cp -r folder1/ folder2/ file1 file2 target_folder/

La copie récursive implique que toute la structure de dossiers sous un dossier, c'est-à-dire les sous-dossiers et les fichiers qu'ils contiennent, les sous-dossiers à l'intérieur des sous-dossiers et les fichiers qu'ils contiennent, etc., est copiée.

Cela copie tous les fichiers, et il n'y a aucun moyen dans le 'cp' commande pour exclure certains fichiers en fonction de certains paramètres. Par exemple, les utilisateurs peuvent souhaiter copier tous les fichiers de manière récursive, à l'exception des fichiers MP3 (audio) dans les sous-dossiers tout en bas de la hiérarchie.

Rechercher tous les fichiers sauf certaines extensions de fichier

Pour ce faire, nous utilisons la commande find, qui est un outil de commande simplement utilisé pour rechercher des fichiers et des dossiers sous Linux en fonction des paramètres du fichier ou du dossier :nom de fichier, extension, taille, etc.

De même, il existe des moyens de rechercher des fichiers en spécifiant quels fichiers doivent être exclus dans la commande de recherche . La syntaxe pour localiser les fichiers d'une extension spécifique en utilisant find est :

$ find <folder_to_search> -name '*.<extension>'

Par exemple, pour localiser tous les fichiers MP3 de manière récursive dans le dossier en cours :

$ find . -name "*.mp3"

Maintenant, pour trouver tous les fichiers dans les dossiers et sous-dossiers, à l'exception des fichiers MP3, utilisez la 'négation' opérateur de trouver :

$ find . ! -name "*.mp3"

Nous pouvons voir que maintenant tout sauf les fichiers MP3 est affiché. Cependant, nous voulons uniquement afficher les fichiers, car cette sortie sera ultérieurement entrée dans ‘cp’ . À l'heure actuelle, il affiche à la fois les fichiers et les dossiers (par exemple, 'temp1/' ), ce qui conduira à des copies répétitives des mêmes fichiers.

Pour supprimer les dossiers de la sortie, utilisez simplement l'argument '-type f' . Ici 'f' représente un fichier.

$ find . ! -name '*.mp3' -type f

Nous n'avons donc plus que les fichiers obtenus récursivement à l'intérieur du dossier 'test' . Nous pouvons maintenant diriger cette sortie vers la commande 'cp' .

Exclure une extension de fichier spécifique lors de la copie récursive de fichiers

Pour ce faire, nous utilisons les ‘xargs’ commande pour faire ‘cp’ considérez la sortie de 'find' comme ses arguments. De plus, nous utilisons le '-t' drapeau pour spécifier le répertoire cible, sans lequel le programme considère la sortie de 'find' comme répertoire cible.

$ find <folder_to_search> ! -name '*.<extension>' -type f | xargs cp -t <target_directory>

Commande réelle.

$ find . ! -name '*.mp3' -type f | xargs cp -t Misc/

Ainsi, tous les fichiers trouvés récursivement, sauf le “.mp3” les fichiers ont été copiés dans le dossier "Misc" .

Conclusion

Dans cet article, nous avons appris à copier des fichiers de manière récursive sous Linux tout en excluant les fichiers d'une certaine extension. Découvrez également comment copier de manière récursive des fichiers d'une extension spécifique.

Si vous avez des questions ou des commentaires, faites-le nous savoir dans les commentaires ci-dessous.


Linux
  1. Comment trouver un fichier sous Linux dans tous les répertoires de manière récursive

  2. Comment utiliser Inotifywait pour surveiller un répertoire pour la création de fichiers d'une extension spécifique ?

  3. Comment rechercher des fichiers par taille et extension ?

  4. Comment copier récursivement des fichiers par extension de fichier ? ?

  5. Comment copier des répertoires de manière récursive à l'aide de rsync tout en excluant des fichiers spécifiques

Comment supprimer des fichiers avec une extension spécifique sous Linux

Comment exclure un répertoire lors de la recherche de fichiers sous Linux

Comment copier des fichiers avec une extension de fichier spécifique de manière récursive

Comment trouver des fichiers basés sur l'horodatage sous Linux

Comment trouver des fichiers contenant une chaîne de texte spécifique sous Linux

Comment trouver des fichiers modifiés au cours des dernières 24 heures sous Linux