Script de tri bash
Résolu/Fermé
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
- Logiciel tri photo - Guide
- Tri sur excel - Guide
- Mas script - Accueil - Windows
- Ghost script - Télécharger - Polices de caractères
13 réponses
dubcek
Messages postés
18778
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
5 avril 2025
5 630
22 avril 2008 à 10:30
22 avril 2008 à 10:30
hello
for X in mp3 avi mpg wav mov ; do mv *.$X dossier_$X done
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
22 avril 2008 à 11:40
22 avril 2008 à 11:40
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$
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 898
22 avril 2008 à 11:42
22 avril 2008 à 11:42
Oups ;-))
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 898
22 avril 2008 à 13:53
22 avril 2008 à 13:53
[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]$;-))
Ssylvainsab
Messages postés
2884
Date d'inscription
samedi 29 juillet 2006
Statut
Modérateur
Dernière intervention
15 août 2020
825
22 avril 2008 à 03:02
22 avril 2008 à 03:02
Salut !
Utilises la commande mv et le joker * :
mv dossier/*.mp3 autredossier/
--
Sylvain
Utilises la commande mv et le joker * :
mv dossier/*.mp3 autredossier/
--
Sylvain
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Merci, mais la j'envoie tous mes fichiers dans un seul dossier, non ?
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 898
22 avril 2008 à 11:35
22 avril 2008 à 11:35
Salut,
Non, chaque fichier est envoyé dans le dossier de même extension ;-))
Non, chaque fichier est envoyé dans le dossier de même extension ;-))
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 898
>
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
22 avril 2008 à 11:41
22 avril 2008 à 11:41
Par contre il faut que chaque dossier existe avant, ou alors vérifier son existence dans le script et le créé le cas échéant ;-))
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 ?
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
22 avril 2008 à 13:54
22 avril 2008 à 13:54
Affiche ce que tu tapes pour voir où est l'erreur
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
22 avril 2008 à 13:59
22 avril 2008 à 13:59
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$
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 898
22 avril 2008 à 14:02
22 avril 2008 à 14:02
Je savais pas, merchi ;-))
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
>
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
22 avril 2008 à 14:12
22 avril 2008 à 14:12
En fait si le répertoire existe il ne sera pas détruit mais un message d'erreur sera afficher
Il nous reste juste à rédirectionner la sortie d'erreur pour ne pas poluer la console ;-))
Il nous reste juste à rédirectionner la sortie d'erreur pour ne pas poluer la console ;-))
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 898
>
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
22 avril 2008 à 14:21
22 avril 2008 à 14:21
Bon c'est sûr que pour un fainéant comme toi c'est plus court d'écrire :
2>/dev/null
que :
if [ ! -d "blabla" ]; then mkdir blabla; fi
;-DDD
2>/dev/null
que :
if [ ! -d "blabla" ]; then mkdir blabla; fi
;-DDD
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 !
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 898
23 avril 2008 à 07:02
23 avril 2008 à 07:02
Affiche le contenu du répertoire avec tes fichiers, s'il te plaît.
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 !
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
23 avril 2008 à 13:06
23 avril 2008 à 13:06
Salut,
c'est un test pour voir si le dossier existe
Voici la traduction
c'est un test pour voir si le dossier existe
if [ ! -d "Dossier_$X" ]; then mkdir "Dossier_$X"
Voici la traduction
Si [ il n'y pas de répertoire "Dossier_$X" ]; ALORS créer le répertoire "Dossier_$X"