3 votes

Comment déplacer tous les fichiers des sous-répertoires vers un autre répertoire ?

Mes fichiers ont la structure suivante :

11
--11a
-----a.jpg
-----b.jpg
-----....
--11b
-----d.jpg
-----g.jpg
...

Je veux avoir tous les fichiers .jpg dans un dossier :

11
-a.jpg
-b.jpg
-d.jpg
-g.jpg
...

En fait, j'ai des sous-dossiers contenant de nombreux fichiers .jpg et je veux tous les déplacer vers un seul répertoire (par exemple, le répertoire parent).

J'ai essayé : mv */*.jpg all mais je reçois -bash: /bin/mv: Argument list too long .

Certains messages suggèrent xargs et d'autres encore trouver mais malheureusement, rien ne semble fonctionner pour moi.

3voto

AFH Points 16642

Si les noms de fichiers sont uniques, utilisez :

find {base folder}/11 -name "*.jpg" -exec mv {} {base folder}/11/ \;

{base folder} est l'endroit où le répertoire 11 résides.

Cela permet d'exécuter le mv sur chaque fichier à tour de rôle : ce sera beaucoup plus lent que de déplacer tous les fichiers en une seule fois. mv mais il n'y aura aucune restriction sur la longueur de la liste d'arguments.

Si certains des noms de fichiers peuvent être en majuscule, vous pouvez utiliser -iname au lieu de -name . Vous pouvez également ajouter -n pour vous assurer que vous n'écrasez pas un fichier qui a déjà été déplacé (vous devez vérifier que votre fichier mv a cette option - sinon, utilisez -i (bien que cela entraîne des conflits).

Vous pouvez vous débarrasser de tous les répertoires vides avec :

rmdir {base folder}/11/*

Vous devrez examiner tous les répertoires qui restent après cette commande.

-2voto

Natwar Singh Points 97

Cela devrait être aussi simple que "mv / .votre_extension ./"

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