Contenu | Rechercher | Menus

Annonce

DVD, clés USB et t-shirts Ubuntu-fr disponibles sur la boutique En Vente Libre

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 21/11/2020, à 19:05

oxibb

Extraction et déplacement de fichiers

Bonsoir à tous,

j'ai une question qui peut paraître idiote, mais je galère avec un truc :

j'ai dans un dossier 40000 photos dans des centaines de sous dossier, je cherche une commande/méthode pour extraire la totalité des fichiers et les copier ou déplacer dans le premier niveau d'un dossier ....

Avez-vous une idée ?

très belle soirée à vous tous

OXIBB

Hors ligne

#2 Le 21/11/2020, à 19:32

Hizoka

Re : Extraction et déplacement de fichiers

Salut,
un truc du genre :

find . -type f -exec mv -i {} . \;

le type f prend tous les fichiers.
sinon il faut un trucx du genre -iname "*.jpg" si tu ne veux que les fichiers jpg

Mais fais une copie de ton dossier d'image avant.

Hors ligne

#3 Le 21/11/2020, à 20:10

oxibb

Re : Extraction et déplacement de fichiers

merci , je vais tester....

bonne soirée

Hors ligne

#4 Le 21/11/2020, à 20:35

oxibb

Re : Extraction et déplacement de fichiers

voilà , merci beaucoup

voici la commande que j'ai utilisé :

find /home/toto/dossier_source -iname '*.jpg' -exec mv {} /home/toto/dossier_destination/ \;

oxibb

Hors ligne

#5 Le 21/11/2020, à 22:34

kamaris

Re : Extraction et déplacement de fichiers

Petite optimisation :

find /home/toto/dossier_source -iname '*.jpg' -exec mv -t /home/toto/dossier_destination/ {} +

Sur 40 000 fichiers, ça pourrait commencer à se voir…

Hors ligne

#6 Le 21/11/2020, à 22:43

Hizoka

Re : Extraction et déplacement de fichiers

je connaissais pas cette option pour mv, pas mal smile

Hors ligne

#7 Le 22/11/2020, à 08:24

oxibb

Re : Extraction et déplacement de fichiers

kamaris a écrit :

Petite optimisation :

find /home/toto/dossier_source -iname '*.jpg' -exec mv -t /home/toto/dossier_destination/ {} +

Sur 40 000 fichiers, ça pourrait commencer à se voir…

merci beaucoup, cela fonctionne bien , j'ai par contre découvert un problème , j'ai beaucoup de fichiers avec le même nom.

Serait-il possible de renomer chaque fichier dans la destination : img1 img2 img3 img4  et en gardan l'extension ?

merci pour votre aide.

Hors ligne

#8 Le 22/11/2020, à 10:17

MicP

Re : Extraction et déplacement de fichiers

Bonjour

… Serait-il possible de renomer chaque fichier dans la destination : img1 img2 img3 img4  et en gardan l'extension ? …

Si la commande rename n'est pas installée,
il te faudra d'abord l'installer :

sudo apt install rename

Ensuite, la ligne de commande suivante fonctionnera comme tu le demandes :

find /chemin/rep_source/ -iname '*.jpg' -exec mv --backup=numbered -t /chemin/rep_destination/ {} + && rename 's/((?:\..+)?)\.~(\d+)~$/$2$1/' /chemin/rep_destination/*.~*~

Dernière modification par MicP (Le 22/11/2020, à 10:24)

Hors ligne

#9 Le 22/11/2020, à 13:32

pseudofab

Re : Extraction et déplacement de fichiers

Bonjour,
@MicP:
Que signifit le ~ dans l'expression régulière de rename?


# Là pour le plaisir de découvrir ...
# Envie d'apprendre Bash ou Python? Pensez aux MOOC ---> https://forum.ubuntu-fr.org/viewtopic.php?id=2030646

Hors ligne

#10 Le 22/11/2020, à 13:50

MicP

Re : Extraction et déplacement de fichiers

Bonjour pseudofab

pseudofab a écrit :

… Que signifit le ~ dans l'expression régulière de rename?

Ce n'est pas un opérateur de l'expression rationnelle,
c'est simplement que l'option --backup=numbered de la commande mv
ajoute à la fin du nom des fichiers doublons
un point suivit d'un numéro entre deux caractères  ~

Comme ci-dessous :

michel@ubuT450:~/tests$ ls -l
.:
total 0
michel@ubuT450:~/tests$ 
michel@ubuT450:~/tests$ mkdir src/{,src1,src2} repCible && touch src/{,src1/,src2/}"fich "{a..c}.jpg
michel@ubuT450:~/tests$ ls -lR src/ repCible/
repCible/:
total 0

src/:
total 8
-rw-rw-r-- 1 michel michel    0 nov.  22 14:31 'fich a.jpg'
-rw-rw-r-- 1 michel michel    0 nov.  22 14:31 'fich b.jpg'
-rw-rw-r-- 1 michel michel    0 nov.  22 14:31 'fich c.jpg'
drwxrwxr-x 2 michel michel 4096 nov.  22 14:31  src1
drwxrwxr-x 2 michel michel 4096 nov.  22 14:31  src2

src/src1:
total 0
-rw-rw-r-- 1 michel michel 0 nov.  22 14:31 'fich a.jpg'
-rw-rw-r-- 1 michel michel 0 nov.  22 14:31 'fich b.jpg'
-rw-rw-r-- 1 michel michel 0 nov.  22 14:31 'fich c.jpg'

src/src2:
total 0
-rw-rw-r-- 1 michel michel 0 nov.  22 14:31 'fich a.jpg'
-rw-rw-r-- 1 michel michel 0 nov.  22 14:31 'fich b.jpg'
-rw-rw-r-- 1 michel michel 0 nov.  22 14:31 'fich c.jpg'
michel@ubuT450:~/tests$ find src/ -iname '*.jpg' -exec mv --backup=numbered -t repCible/ {} +
michel@ubuT450:~/tests$ ls -lR src/ repCible/
repCible/:
total 0
-rw-rw-r-- 1 michel michel 0 nov.  22 14:31 'fich a.jpg'
-rw-rw-r-- 1 michel michel 0 nov.  22 14:31 'fich a.jpg.~1~'
-rw-rw-r-- 1 michel michel 0 nov.  22 14:31 'fich a.jpg.~2~'
-rw-rw-r-- 1 michel michel 0 nov.  22 14:31 'fich b.jpg'
-rw-rw-r-- 1 michel michel 0 nov.  22 14:31 'fich b.jpg.~1~'
-rw-rw-r-- 1 michel michel 0 nov.  22 14:31 'fich b.jpg.~2~'
-rw-rw-r-- 1 michel michel 0 nov.  22 14:31 'fich c.jpg'
-rw-rw-r-- 1 michel michel 0 nov.  22 14:31 'fich c.jpg.~1~'
-rw-rw-r-- 1 michel michel 0 nov.  22 14:31 'fich c.jpg.~2~'

src/:
total 8
drwxrwxr-x 2 michel michel 4096 nov.  22 14:32 src1
drwxrwxr-x 2 michel michel 4096 nov.  22 14:32 src2

src/src1:
total 0

src/src2:
total 0
michel@ubuT450:~/tests$ rename 's/((?:\..+)?)\.~(\d+)~$/$2$1/' repCible/*.~*~
michel@ubuT450:~/tests$ ls -l repCible/
total 0
-rw-rw-r-- 1 michel michel 0 nov.  22 14:31 'fich a1.jpg'
-rw-rw-r-- 1 michel michel 0 nov.  22 14:31 'fich a2.jpg'
-rw-rw-r-- 1 michel michel 0 nov.  22 14:31 'fich a.jpg'
-rw-rw-r-- 1 michel michel 0 nov.  22 14:31 'fich b1.jpg'
-rw-rw-r-- 1 michel michel 0 nov.  22 14:31 'fich b2.jpg'
-rw-rw-r-- 1 michel michel 0 nov.  22 14:31 'fich b.jpg'
-rw-rw-r-- 1 michel michel 0 nov.  22 14:31 'fich c1.jpg'
-rw-rw-r-- 1 michel michel 0 nov.  22 14:31 'fich c2.jpg'
-rw-rw-r-- 1 michel michel 0 nov.  22 14:31 'fich c.jpg'
michel@ubuT450:~/tests$ 
michel@ubuT450:~/tests$ rm -rf src/ repCible/
michel@ubuT450:~/tests$ 

Dernière modification par MicP (Le 22/11/2020, à 21:30)

Hors ligne

#11 Le 22/11/2020, à 15:16

pseudofab

Re : Extraction et déplacement de fichiers

Merci pour ta réponse, maintenant tout prend sens.
De plus, j'ai appris d'autres choses dans ton code explicatif wink


# Là pour le plaisir de découvrir ...
# Envie d'apprendre Bash ou Python? Pensez aux MOOC ---> https://forum.ubuntu-fr.org/viewtopic.php?id=2030646

Hors ligne

#12 Le 22/11/2020, à 21:31

MicP

Re : Extraction et déplacement de fichiers

Cool cool,
merci pour le retour  smile

Hors ligne