90 votes

Comment puis-je copier récursivement des fichiers par extension de fichier, en préservant la structure du répertoire ?

À la ligne de commande Linux, j'aimerais copier un (très grand) ensemble d'éléments de .txt d'un répertoire (et de ses sous-répertoires) à un autre.

J'ai besoin que la structure des répertoires reste intacte, et j'ai besoin d'ignorer les fichiers sauf ceux se terminant par .txt .

1voto

J'ai essayé de faire la même chose sur macOS, mais aucune des options n'a vraiment fonctionné pour moi. Jusqu'à ce que je découvre ditto .

J'ai dû copier de nombreux fichiers .wav, et faire sauter des fichiers vidéo... Voici donc ce que j'ai trouvé :

find . -type f -iname "*.wav" -ls -exec ditto {} /destination/folder/{} \;

  • find . - Runs trouver dans le dossier actuel. assurez-vous que vous cd /source/folder avant de commencer

  • -type f - Spécifie de rechercher uniquement les fichiers

  • -iname "*.wav" - Cela lui indique de rechercher les fichiers *.wav sans tenir compte de la casse.

  • -ls - Cela vous montre le fichier sur lequel il travaille. Sinon, il ne montre rien.

  • -exec ditto {} /destination/folder/{} \; - Effectue tout le travail de copie et de création des fichiers avec la même arborescence de répertoire.

0voto

keywalker Points 1

Naviguez vers le répertoire :

find . -regex '<regexp_to_get_directories_and_files_you_want>' | xargs -i cp -r --parents {} path/to/destination

C'est un peu plus simple et puissant, si vous gérez les expressions régulières.

-1voto

Phoenix Points 1

Naviguez vers le répertoire :

cp '*.css' /path/to/destination

Vous devrez naviguer vers chaque dossier du répertoire, mais c'est mieux que la plupart des options que j'ai vues jusqu'à présent.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X