GNU/Linux >> Tutoriels Linux >  >> Linux

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

Sous Linux, la commande 'cp ', quelles normes pour 'Copier ‘ est utilisé pour copier des fichiers et des dossiers dans un autre dossier. Il est disponible par défaut sous Linux dans le cadre de GNU Coreutils ensemble d'outils.

L'utilisation la plus élémentaire de la commande cp est de spécifier les fichiers à copier comme arguments et de spécifier le dossier cible comme dernier argument.

$ cp file1 file2 file3... fileN target_folder/

Copier des fichiers avec des extensions de fichier spécifiques

Vous pouvez même copier des fichiers de la même extension de fichier (par exemple, .txt , .jpg , .mp4 ) en utilisant des caractères génériques, comme indiqué ci-dessous :

$ cp *.jpg *.mp4 *.mp3 media/

Cela copiera tous les fichiers JPEG images, MP3, et MP4 fichiers multimédia dans le dossier ‘media ‘. Notez que cela ne peut être utilisé que pour les fichiers. Si vous essayez de copier des dossiers dans le format ci-dessus, un avertissement s'affiche indiquant que le dossier est "Non vide" ‘.

Pour copier des dossiers, nous devons spécifier le '-r' (récursif ) drapeau. Récursif signifie que tous les fichiers de ce dossier, les fichiers des sous-dossiers, etc. seront tous copiés.

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

Cependant, il n'y a aucun moyen dans 'cp' pour copier des fichiers d'une extension spécifique de manière récursive. Chaque fois que '-r' est spécifié, le programme considère toujours tous les fichiers des sous-dossiers pour la copie.

Rechercher et copier des fichiers avec une extension de fichier

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

Nous utiliserons la commande de recherche pour localiser de manière récursive les fichiers avec une extension de fichier spécifique, puis transmettre cette sortie à cp commande pour les copier.

Syntaxe pour localiser les fichiers d'une extension spécifique à l'aide de la commande find est :

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

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

$ find . -name '*.jpg'

Enfin, nous devons rediriger cette sortie vers la commande cp . 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 de cp , pour spécifier le répertoire cible, sans lequel le programme considère la sortie de ‘find’ comme répertoire cible.

$ find . -name '*.jpg' | xargs cp -t Pictures2/

Ainsi, tous les fichiers d'extension '.jpg' ont été copiés dans le dossier 'Pictures2' .

Conclusion

Dans cet article, nous avons appris à copier des fichiers avec une extension spécifique de manière récursive sous Linux. Notez que cette méthode est utile si vous traitez un petit nombre de fichiers. Pour un grand nombre de fichiers (par exemple, des dizaines de milliers), vous devez utiliser une approche différente pour copier les fichiers de manière récursive.

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


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

  2. Comment supprimer des fichiers avec une extension spécifique dans la ligne de commande Linux

  3. Comment rechercher tous les fichiers avec une taille de fichier de zéro (0) octet dans un répertoire de manière récursive

  4. Trouver récursivement des fichiers avec une extension spécifique

  5. Comment copier un fichier de manière transactionnelle ?

Comment copier des fichiers et des répertoires sous Linux

Comment tarer des types de fichiers spécifiques (extensions) dans un répertoire

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

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

Comment copier des fichiers et des répertoires dans un terminal Linux

Comment ajouter une option pour créer un nouveau fichier avec une extension spécifique dans le menu contextuel ?