Page 1 sur 1

[files] déplacer en masse

Publié : lun. 22 janv. 2018, 18:21
par Taema
Bonjour,

J'ai des fichiers dans une arborescence comme ceci :

Code : Tout sélectionner

Dossier 1 -
                | 
                -----> Sous-Dossier 1 -
                                                |
                                                 -----> Fichier 1
                                                 -----> Fichier 2
                                                 -----> Fichier 3
                ----->  Sous-Dossier 2
                                                |
                                                 -----> Fichier 1
                                                 -----> Fichier 2
                                                 -----> Fichier 3
                ----->  Sous-Dossier 3
                                                |
                                                 -----> Fichier 1
                                                 -----> Fichier 2
                                                 -----> Fichier 3
Je voudrais déplacer tous les fichiers dans le Dossier 1 (en "vrac") comment est-ce que je peux faire ?

Merci

Re: [files] déplacer en masse

Publié : lun. 22 janv. 2018, 18:45
par Xorg
Je suppose que tu veux une commande ?
En te plaçant dans "Dossier 1", puis :

Code : Tout sélectionner

mv */* .
C'est tout. :)

Si tu veux supprimer les répertoires vides, il est possible d'utiliser la commande suivante :

Code : Tout sélectionner

rmdir *
(rmdir refusera d'effacer les fichiers, c'est normal.)

Re: [files] déplacer en masse

Publié : lun. 22 janv. 2018, 23:31
par Taema
Ah génial et si j'ai d'autres sous dossiers il les prendra en compte ou il faut rajouter un / à chaque fois ?

Et pour récupérer un type d'extension je fais mv */*.mp3 . ?

Re: [files] déplacer en masse

Publié : mar. 23 janv. 2018, 09:05
par Xorg
mv est une des rares commandes Unix qui traite les répertoires de la même façon que les fichiers, j'entends par là que ça déplacera aussi les répertoires que les fichiers. Donc pas besoin de rajouter un /. Cependant, bien que la commande déplace le contenu des sous-dossiers au dossier, les sous-sous-dossiers seront déplacés dans le "Dossier 1", tels qu'ils l'étaient.
Si ton objectif est de ne garder aucun sous-dossier/sous-sous-dossier/... il faudra plutôt utiliser une autre commande (à base de find).

Oui, le joker * prend tout, et tu peux filtrer aux fichiers d'extensions .mp3 avec *.mp3.

Un autre exemple pour déplacer tous les fichiers .mp3 en vrac dans "Dossier 1" (j'ai mis ., ce qui implique que tu lances cette commande depuis le "Dossier 1") :

Code : Tout sélectionner

find . -iname *.mp3 -type f -exec mv -t . {} +
Et pour supprimer tous les répertoires/sous-répertoires/sous-sous-répertoires/... vides :

Code : Tout sélectionner

find . -type d -empty -delete

Re: [files] déplacer en masse

Publié : mer. 24 janv. 2018, 18:30
par avi3000
Bonsoir,

Pour déplacer, la syntaxe est plus simple avec globstar.

Code : Tout sélectionner

shopt -s globstar
mv **/*.mp3 .
Attention (quelle que soit la commande utilisée) : Si des fichiers portent le même nom dans des dossiers différents, seul le dernier fichier déplacé sera conservé.