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 ^^)