Script de tri bash
Résolu
Zoubsy
-
Zoubsy -
Zoubsy -
Bonjour,
je souhaite créer un script de tri de fichier. C'est à dire un script qui déplacerait tous les fichiers mp3 d'un dossier vers un autre, tous les fichiers .avi vers un troisième et ainsi de suite.
Cependant je débute en bash (et sur linux en général), et je ne vois pas comment faire.
Merci d'avance !
je souhaite créer un script de tri de fichier. C'est à dire un script qui déplacerait tous les fichiers mp3 d'un dossier vers un autre, tous les fichiers .avi vers un troisième et ainsi de suite.
Cependant je débute en bash (et sur linux en général), et je ne vois pas comment faire.
Merci d'avance !
A voir également:
- Script de tri bash
- Script vidéo youtube - Guide
- Comment faire un tri personnalisé sur excel - Guide
- Logiciel tri photo - Guide
- Mas script - Accueil - Windows
- Ghost script - Télécharger - Polices de caractères
13 réponses
Salut,
la commande de dubcek change le nom de fichiers de fichier.avi en dossier_avi
il faut d'abord créer les répertoires
l
la commande de dubcek change le nom de fichiers de fichier.avi en dossier_avi
il faut d'abord créer les répertoires
lami20j@debian:~/trash$ for x in avi mp3 ogg; do mkdir dossier_$x;done lami20j@debian:~/trash$ ls -ld dossier_* drwxr-xr-x 2 lami20j lami20j 4096 2008-04-22 11:38 dossier_avi drwxr-xr-x 2 lami20j lami20j 4096 2008-04-22 11:38 dossier_mp3 drwxr-xr-x 2 lami20j lami20j 4096 2008-04-22 11:38 dossier_ogg lami20j@debian:~/trash$ ls -lR dossier_* dossier_avi: total 0 dossier_mp3: total 0 dossier_ogg: total 0et ensuite deplacer
l
ami20j@debian:~/trash$ for x in avi mp3 ogg; do mv -v *.$x dossier_$x/;done `a.avi' -> `dossier_avi/a.avi' `a.mp3' -> `dossier_mp3/a.mp3' `a.ogg' -> `dossier_ogg/a.ogg' lami20j@debian:~/trash$ ls -lR dossier_* dossier_avi: total 0 -rw-r--r-- 1 lami20j lami20j 0 2008-04-22 11:38 a.avi dossier_mp3: total 0 -rw-r--r-- 1 lami20j lami20j 0 2008-04-22 11:38 a.mp3 dossier_ogg: total 0 -rw-r--r-- 1 lami20j lami20j 0 2008-04-22 11:38 a.ogg lami20j@debian:~/trash$
[jp@MDK-2008 trash]$ tree . |-- fich1.avi |-- fich1.mov |-- fich1.mp3 |-- fich1.mpg |-- fich1.wav |-- fich2.avi |-- fich2.mov |-- fich2.mp3 |-- fich2.mpg |-- fich2.wav |-- fich3.avi |-- fich3.mov |-- fich3.mp3 |-- fich3.mpg |-- fich3.wav |-- fich4.avi |-- fich4.mov |-- fich4.mp3 |-- fich4.mpg |-- fich4.wav |-- fich5.avi |-- fich5.mov |-- fich5.mp3 |-- fich5.mpg `-- fich5.wav 0 directories, 25 files [jp@MDK-2008 trash]$ for X in mp3 avi mpg wav mov do if [ ! -d "Dossier_$X" ]; then mkdir "Dossier_$X" fi mv *.$X Dossier_$X done [jp@MDK-2008 trash]$ tree . |-- Dossier_avi | |-- fich1.avi | |-- fich2.avi | |-- fich3.avi | |-- fich4.avi | `-- fich5.avi |-- Dossier_mov | |-- fich1.mov | |-- fich2.mov | |-- fich3.mov | |-- fich4.mov | `-- fich5.mov |-- Dossier_mp3 | |-- fich1.mp3 | |-- fich2.mp3 | |-- fich3.mp3 | |-- fich4.mp3 | `-- fich5.mp3 |-- Dossier_mpg | |-- fich1.mpg | |-- fich2.mpg | |-- fich3.mpg | |-- fich4.mpg | `-- fich5.mpg `-- Dossier_wav |-- fich1.wav |-- fich2.wav |-- fich3.wav |-- fich4.wav `-- fich5.wav 5 directories, 25 files [jp@MDK-2008 trash]$;-))
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
La création des dossiers marche, par contre le déplacement non :
Sinon, pour la création des dossiers, il n'y a pas moyen de ne pas avoir a signaler l'extension, mais qu'il la trouve de lui-meme ?
mv: option invalide -- Pour en savoir davantage, faites: « mv --help ». mv: option invalide -- Pour en savoir davantage, faites: « mv --help ».
Sinon, pour la création des dossiers, il n'y a pas moyen de ne pas avoir a signaler l'extension, mais qu'il la trouve de lui-meme ?
normalement il n'y a pas besoin de test pour mkdir ;-)
lami20j@debian:~/trash$ ls -lR dossier_* dossier_avi: total 0 -rw-r--r-- 1 lami20j lami20j 0 2008-04-22 11:38 a.avi dossier_mp3: total 0 -rw-r--r-- 1 lami20j lami20j 0 2008-04-22 11:38 a.mp3 dossier_ogg: total 0 -rw-r--r-- 1 lami20j lami20j 0 2008-04-22 11:38 a.ogg lami20j@debian:~/trash$ ls -l *.{avi,ogg,mp3,mpg} -rw-r--r-- 1 lami20j lami20j 0 2008-04-22 13:55 aaa.mpg -rw-r--r-- 1 lami20j lami20j 0 2008-04-22 13:57 aa.avi -rw-r--r-- 1 lami20j lami20j 0 2008-04-22 13:57 aa.mp3 -rw-r--r-- 1 lami20j lami20j 0 2008-04-22 13:57 aa.mpg -rw-r--r-- 1 lami20j lami20j 0 2008-04-22 13:57 aa.ogg lami20j@debian:~/trash$ for x in avi mp3 m ogg; do mkdir dossier_$x;mv -v *.$x dossier_$x/;done 2>/dev/null `aa.avi' -> `dossier_avi/aa.avi' `aa.mp3' -> `dossier_mp3/aa.mp3' `aa.ogg' -> `dossier_ogg/aa.ogg' lami20j@debian:~/trash$ ls -lR dossier_* dossier_avi: total 0 -rw-r--r-- 1 lami20j lami20j 0 2008-04-22 13:57 aa.avi -rw-r--r-- 1 lami20j lami20j 0 2008-04-22 11:38 a.avi dossier_m: total 0 dossier_mp3: total 0 -rw-r--r-- 1 lami20j lami20j 0 2008-04-22 13:57 aa.mp3 -rw-r--r-- 1 lami20j lami20j 0 2008-04-22 11:38 a.mp3 dossier_ogg: total 0 -rw-r--r-- 1 lami20j lami20j 0 2008-04-22 13:57 aa.ogg -rw-r--r-- 1 lami20j lami20j 0 2008-04-22 11:38 a.ogg lami20j@debian:~/trash$
Voila le script que j'ai executé :
Résultat : mes fichiers n'ont pas bougés, cependant les dossiers "Dossiers_.jpg" et autres ont bien étés crées, par contre je sais pas si le point dans le nom du dossier est normal.
Merci de votre aide !
#!/bin/sh for X in jpg JPG avi mpg mpeg do if [ ! -d "Dossier_$X" ]; then mkdir "Dossier_$X" fi mv *.$X Dossier_$X done
Résultat : mes fichiers n'ont pas bougés, cependant les dossiers "Dossiers_.jpg" et autres ont bien étés crées, par contre je sais pas si le point dans le nom du dossier est normal.
Merci de votre aide !
C'est bon, j'ai réussi, ça marche impec, j'avais juste oublié le $ dans
J'ai juste une petite question : quelqu'un pourrait-il m'expliquer ce que signifie
mv *.$X Dossier_$X. Merci encore !
J'ai juste une petite question : quelqu'un pourrait-il m'expliquer ce que signifie
[ ! -d "Dossier_$X" ]Merci encore !