De façon récursive de déplacer tous les fichiers d'un type spécifique dans un répertoire cible dans Bash
Comment pourrais-je déplacer tous .les fichiers txt à partir d'un dossier et tous les dossiers dans un répertoire cible .
Et, de préférence, de les renommer le dossier où ils sont inclus, même si ce n'est pas si important que cela. Je ne suis pas familier avec bash.
OriginalL'auteur Mehran | 2013-01-15
Vous devez vous connecter pour publier un commentaire.
Récursive de déplacer des fichiers, de les combiner
find
avecmv
.Pour renommer les fichiers lorsque vous les déplacez, il est plus délicat. Une façon est d'avoir une boucle qui passe chaque nom de fichier par le biais de
tr /_
, qui convertit les barres obliques dans des traits de soulignement.find src/dir -name '*.txt' -exec bash -c 'mv "$1" "${1//\//_}"' _ {} ';'
OriginalL'auteur
Essayez ceci:
Cela permettra de travailler plus vite que n'importe quelle option -exec, car il ne sera pas invoquer un seul mv processus pour chaque fichier qui doit être déplacé.
Beaucoup, beaucoup plus vite que l'on a accepté la réponse. Notez que pour la robustesse, c'est une bonne idée pour utiliser zéro terminée par le nom de fichier de chaînes:
find source -name '*.txt' -print0 | xargs -0 -I files mv files target
Nice, fonctionne comme un charme
OriginalL'auteur
Si c'est juste un niveau:
OriginalL'auteur