Script #bash tri de fichier par extension
kevin76110
Messages postés
5350
Statut
Membre
-
kevin76110 Messages postés 5350 Statut Membre -
kevin76110 Messages postés 5350 Statut Membre -
Bonjour,
J'ai, à la suite du récupération de fichier avec test disk, dees milliers de fichiers dans des dossiers que j'aimerais trier en fonction de leur extention : par exemple, dans le dossier 1 mettre tous les .pdf, dossier 2 tous les .jpg etc.
J'ai trouvé ceci :
#!/bin/bash
# script pour réorganiser une arborescence rapidement
#
# Copyright (C) 22 Jan. 2011, Rombeaut Rodolphe
# http://scriptam.over-blog.com/
# Released into the public domain.
ORIG="/répertoire à trier"
DEST="/répertoire de destination"
# ------------------------
# Partie à ne pas toucher
# ------------------------
ORIG=${ORIG%/}
DEST=${DEST%/}
find $ORIG/ -regextype "posix-extended" -depth -type f -regex ".*" | while read fichier ; do
a=$(file -ib "${fichier}")
[ -d "$DEST/${a%%/*}" ] || mkdir -p "$DEST/${a%%/*}"
mvfichier=${fichier##*/}
[ "${fichier%/*}" != "$DEST/${a%%/*}" ] && {
[ -f "$DEST/${a%%/*}/${mvfichier}" ] && {
b=1
while [ -f "$DEST/${a%%/*}/copie${b}___${mvfichier#*___}" ] ; do ((b++)) ; done
mv "${fichier}" "$DEST/${a%%/*}/copie${b}___${mvfichier#*___}"
} || mv "${fichier}" "$DEST/${a%%/*}/${mvfichier}"
}
done
find $ORIG/ -type d -exec rmdir 2>/dev/null {} \;
exit
ici : http://scriptam.over-blog.com/...
J'aimerais savoir si c'est bien ce que je recherche.
Bonne aprem à vous,
Kévin
___
°º¤ø,¸¸,ø¤º°'°º¤ø, Contributeur CCM °º¤ø,¸¸,ø¤º°'°º¤ø,
c'est pas parce que la solution ne vous plait pas qu'il faut mettre -1, c'est juste quand elle est inutile qu'il faut en mettre.
J'ai, à la suite du récupération de fichier avec test disk, dees milliers de fichiers dans des dossiers que j'aimerais trier en fonction de leur extention : par exemple, dans le dossier 1 mettre tous les .pdf, dossier 2 tous les .jpg etc.
J'ai trouvé ceci :
#!/bin/bash
# script pour réorganiser une arborescence rapidement
#
# Copyright (C) 22 Jan. 2011, Rombeaut Rodolphe
# http://scriptam.over-blog.com/
# Released into the public domain.
ORIG="/répertoire à trier"
DEST="/répertoire de destination"
# ------------------------
# Partie à ne pas toucher
# ------------------------
ORIG=${ORIG%/}
DEST=${DEST%/}
find $ORIG/ -regextype "posix-extended" -depth -type f -regex ".*" | while read fichier ; do
a=$(file -ib "${fichier}")
[ -d "$DEST/${a%%/*}" ] || mkdir -p "$DEST/${a%%/*}"
mvfichier=${fichier##*/}
[ "${fichier%/*}" != "$DEST/${a%%/*}" ] && {
[ -f "$DEST/${a%%/*}/${mvfichier}" ] && {
b=1
while [ -f "$DEST/${a%%/*}/copie${b}___${mvfichier#*___}" ] ; do ((b++)) ; done
mv "${fichier}" "$DEST/${a%%/*}/copie${b}___${mvfichier#*___}"
} || mv "${fichier}" "$DEST/${a%%/*}/${mvfichier}"
}
done
find $ORIG/ -type d -exec rmdir 2>/dev/null {} \;
exit
ici : http://scriptam.over-blog.com/...
J'aimerais savoir si c'est bien ce que je recherche.
Bonne aprem à vous,
Kévin
___
°º¤ø,¸¸,ø¤º°'°º¤ø, Contributeur CCM °º¤ø,¸¸,ø¤º°'°º¤ø,
c'est pas parce que la solution ne vous plait pas qu'il faut mettre -1, c'est juste quand elle est inutile qu'il faut en mettre.
A voir également:
- Script #bash tri de fichier par extension
- Fichier bin - Guide
- Changer extension fichier - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
2 réponses
Salut,
A quelque chose prêt, oui, mais... parce qu'il y a un mais ;-\
Les fichiers ne sont pas trié en fonction de leur extension (pdf, jpg, txt, etc.) mais en fonction de leur type (image, audio, vidéo, texte, etc.), ce qui n'est pas trop gênant en fin de compte.
Par contre, la dernière ligne "find $ORIG/ -type d -exec rmdir 2>/dev/null {} \; " supprime tous les répertoires d'origine et les fichiers qu'ils contiennent une fois le tri terminé ;-\
Je ne pense pas que ce soit ce que tu veux, du moins tant que tu n'es pas sûr d'avoir vraiment fait le tri...
A quelque chose prêt, oui, mais... parce qu'il y a un mais ;-\
Les fichiers ne sont pas trié en fonction de leur extension (pdf, jpg, txt, etc.) mais en fonction de leur type (image, audio, vidéo, texte, etc.), ce qui n'est pas trop gênant en fin de compte.
Par contre, la dernière ligne "find $ORIG/ -type d -exec rmdir 2>/dev/null {} \; " supprime tous les répertoires d'origine et les fichiers qu'ils contiennent une fois le tri terminé ;-\
Je ne pense pas que ce soit ce que tu veux, du moins tant que tu n'es pas sûr d'avoir vraiment fait le tri...
Merci de ta réponse =)A la limite je m'en fout que les fichiers soient détruits, s'ils sont copié ou déplacés quelque part.
Mais je vais quand même la retirer par sécurité.
Le trie ainsi n'est pas trop mal.
Si je mets ceci :
ORIG="/répertoire à trier"
DEST="/répertoire de destination"
ORIG=${ORIG%/}
DEST=${DEST%/}
find $ORIG/ -regextype "posix-extended" -depth -type f -regex ".*" | while read fichier ; do
a=$(file -ib "${fichier}")
[ -d "$DEST/${a%%/*}" ] || mkdir -p "$DEST/${a%%/*}"
mvfichier=${fichier##*/}
[ "${fichier%/*}" != "$DEST/${a%%/*}" ] && {
[ -f "$DEST/${a%%/*}/${mvfichier}" ] && {
b=1
while [ -f "$DEST/${a%%/*}/copie${b}___${mvfichier#*___}" ] ; do ((b++)) ; done
mv "${fichier}" "$DEST/${a%%/*}/copie${b}___${mvfichier#*___}"
} || mv "${fichier}" "$DEST/${a%%/*}/${mvfichier}"
}
done
exit
Ca triera bien ?
(désolé je débute un peu en bash ^^)
Mais je vais quand même la retirer par sécurité.
Le trie ainsi n'est pas trop mal.
Si je mets ceci :
ORIG="/répertoire à trier"
DEST="/répertoire de destination"
ORIG=${ORIG%/}
DEST=${DEST%/}
find $ORIG/ -regextype "posix-extended" -depth -type f -regex ".*" | while read fichier ; do
a=$(file -ib "${fichier}")
[ -d "$DEST/${a%%/*}" ] || mkdir -p "$DEST/${a%%/*}"
mvfichier=${fichier##*/}
[ "${fichier%/*}" != "$DEST/${a%%/*}" ] && {
[ -f "$DEST/${a%%/*}/${mvfichier}" ] && {
b=1
while [ -f "$DEST/${a%%/*}/copie${b}___${mvfichier#*___}" ] ; do ((b++)) ; done
mv "${fichier}" "$DEST/${a%%/*}/copie${b}___${mvfichier#*___}"
} || mv "${fichier}" "$DEST/${a%%/*}/${mvfichier}"
}
done
exit
Ca triera bien ?
(désolé je débute un peu en bash ^^)