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.