[bash] script non fonctionnelle, mais pas d'e
Résolu
periplasme
Messages postés
422
Statut
Membre
-
Char Snipeur Messages postés 10112 Statut Contributeur -
Char Snipeur Messages postés 10112 Statut Contributeur -
Bonjour tout le monde,
voila, téléchargant beaucoup, je souhaitais automatiser la gestion des fichiers (les musiques dans music/, les ebooks dans ebooks/ ... ) bref, je suis pas über familier avec les script et je trouve pas où se trouve l'erreur ...
bash ne me cri pas dessus, mais ne copie rien ...
une âme charitable pour m'expliquer mon erreur ?
voila, téléchargant beaucoup, je souhaitais automatiser la gestion des fichiers (les musiques dans music/, les ebooks dans ebooks/ ... ) bref, je suis pas über familier avec les script et je trouve pas où se trouve l'erreur ...
# les extensions
tab="*.epub"
tab[1]="*.pdf"
tab[2]="*.mp3"
tab[3]="*.ogg"
tab[4]="*.wav"
tab[5]="*.avi"
tab[6]="*.mkv"
tab[7]="*.mp4"
# pour tout fichiers dans le répertoire courant, on verifie l'extension, et on range en conséquence.
for ((i=0; i<=7; i++))
do
#epub et pdf
if test $i -le 1; then
find ./ -name tab[$i] -exec cp {} ebooks/ \;
else #mp3, ogg, et wav
if test $i -ge 2 && test $i -le 4; then
find ./ -name tab[$i] -exec cp {} music/ \;
else #avi, mkv, et mp4
if test $i -ge 5 && test $i -le 7; then
find ./ -name tab[$i] -exec cp {} movies/ \;
fi fi fi
done
bash ne me cri pas dessus, mais ne copie rien ...
une âme charitable pour m'expliquer mon erreur ?
A voir également:
- [bash] script non fonctionnelle, mais pas d'e
- Script vidéo youtube - Guide
- É majuscule - Guide
- Mas script - Accueil - Windows
- Bingo bash free - Télécharger - Divers Jeux
- Bash addition ✓ - Forum Shell
3 réponses
hello
!! attention, il me semble que le find va aussi descendre dans les répertoires ebooks music et movies et essayer de copier les fichiers sur eux-mêmes.
on peut utiliser tab=(...) pour initialiser un tableau
utiliser ${} avec les variables : ${tab[$i]}
utiliser " pour le find -name à cause des *
on peut connaitre la taille du tableau avec ${#tab[@]}
!! attention, il me semble que le find va aussi descendre dans les répertoires ebooks music et movies et essayer de copier les fichiers sur eux-mêmes.
on peut utiliser tab=(...) pour initialiser un tableau
utiliser ${} avec les variables : ${tab[$i]}
utiliser " pour le find -name à cause des *
on peut connaitre la taille du tableau avec ${#tab[@]}
#!/bin/bash
# les extensions
tab=("*.epub" "*.pdf" "*.mp3" "*.ogg" "*.wav" "*.avi" "*.mkv" "*.mp4")
# pour tout fichiers dans le répertoire courant, on verifie l'extension, et on range en conséquence.
for ((i=0; i<=${#tab[@]}; i++))
do
#epub et pdf
if test $i -le 1; then
find ./ -name "${tab[$i]}" -exec cp {} ebooks/ \;
else #mp3, ogg, et wav
if test $i -ge 2 && test $i -le 4; then
find ./ -name "${tab[$i]}" -exec cp {} music/ \;
else #avi, mkv, et mp4
if test $i -ge 5 && test $i -le 7; then
find ./ -name "${tab[$i]}" -exec cp {} movies/ \;
fi fi fi
done
Salut.
Je ne sais pas trop ce qui merde dans ton script. Mais pourquoi faire compliquer quand on peut faire simple ?
d'ailleurs, si tu veux ranger, tu devrais plutôt faire un mv qu'un cp.
De toute les manières ta boucle est inutile, si tu veux vraiment le faire avec find, il y a moyen de lui passé plusieurs extension.
Je ne sais pas trop ce qui merde dans ton script. Mais pourquoi faire compliquer quand on peut faire simple ?
books="*.pdf *.epub"
music="*.mp3 *.wav"
video="*.avi *.mpeg"
if ls $books
then :
cp $books ebooks
fi
if ls $music
then :
cp $music music/
fi
if ls $video
then :
cp $video movies/
fi
d'ailleurs, si tu veux ranger, tu devrais plutôt faire un mv qu'un cp.
De toute les manières ta boucle est inutile, si tu veux vraiment le faire avec find, il y a moyen de lui passé plusieurs extension.