Sur la ligne de commande Linux, j'aimerais copier un (très grand) ensemble de .txt
fichiers d'un répertoire (et de ses sous-répertoires) à un autre.
J'ai besoin de la structure de répertoire pour rester intact et je dois ignorer les fichiers sauf ceux se terminant par .txt
.
Réponses:
Vous pouvez utiliser find et cpio pour le faire
la source
la source
.
aprèsfind
. Également sur macOS 10.13.1, cela a fonctionné:find . -type f -name "*.txt" -exec install -v {} /dest/path/{} \;
Une autre approche
find . -name '*.txt' -exec rsync -R {} path/to/dext \;
la source
find . -iname '*.txt' -exec rsync -Rptgon {} path/to/dext \;
de faire une correspondance insensible à la casse et de préserver la propriété et les autorisations.Le moyen le plus simple qui a fonctionné pour moi:
Un problème est que vous devez accéder au répertoire "souhaité" avant que le "chemin parent" soit correct.
Assurez-vous également que vous avez activé les globes récursifs dans bash:
la source
que diriez-vous d'abord copiez-le avec
puis allez dans le nouveau dossier et lancez
ou juste
Edit: ok vous voulez une commande qui filtre (je ne l’ai pas testée car mon système n’a pas la
cpio
commande!). Voici où je l'ai trouvé: http://www.gnu.org/software/findutils/manual/html_mono/find.html#Copying-A-Subset-of-FilesVeuillez d'abord tester ceci, car je ne l'ai pas encore essayé. Si quelqu'un vérifiait, ce serait génial.
la source
0
dans-pmd0
et ajouter-print0
à la fin de lafind
commande (juste avant le|
).J'essayais de faire la même chose sur macOS, mais aucune des options ne fonctionnait vraiment pour moi. Jusqu'à ce que je découvre
ditto
.Je devais copier beaucoup de fichiers .wav, et le laisser passer les fichiers vidéo ... Voici donc ce que je propose:
find . -type f -iname "*.wav" -ls -exec ditto {} /destination/folder/{} \;
find .
- Fonctionne dans le dossier en cours. assurez-vouscd /source/folder
avant de commencer-type f
- Spécifie de ne rechercher que des fichiers-iname "*.wav"
- Cela lui dit de chercher insensible à la casse * .wav-ls
- Cela vous montre le fichier sur lequel il travaille. Sinon, ça ne montre rien.-exec ditto {} /destination/folder/{} \;
- Fait tout le travail de copie et de création des fichiers avec la même arborescence.la source
Naviguez vers le répertoire:
C’est un peu plus simple et puissant si vous gérez les expressions régulières.
la source
Naviguez vers le répertoire:
Vous devrez accéder à chaque dossier du répertoire, mais c'est mieux que la plupart des options que j'ai vues jusqu'à présent.
la source