[bash] script non fonctionnelle, mais pas d'e
Résolu/Fermé
periplasme
Messages postés
391
Date d'inscription
vendredi 22 avril 2011
Statut
Membre
Dernière intervention
5 février 2013
-
Modifié par periplasme le 5/04/2012 à 22:40
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 7 avril 2012 à 10:45
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 7 avril 2012 à 10:45
A voir également:
- [bash] script non fonctionnelle, mais pas d'e
- Script vidéo youtube - Guide
- É - Guide
- List bash ✓ - Forum Shell
- E/s en série intel - Forum Carte graphique
- Configuration astra 19.2 e - Forum TNT / Satellite / Réception
3 réponses
dubcek
Messages postés
18758
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
24 décembre 2024
5 623
Modifié par dubcek le 6/04/2012 à 09:16
Modifié par dubcek le 6/04/2012 à 09:16
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
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
6 avril 2012 à 09:29
6 avril 2012 à 09:29
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.
periplasme
Messages postés
391
Date d'inscription
vendredi 22 avril 2011
Statut
Membre
Dernière intervention
5 février 2013
53
6 avril 2012 à 18:03
6 avril 2012 à 18:03
effectivement, cela me semble plus simple. je pense que j'ai voulu faire un poil trop compliqué ...
ps : j'utilise cp pour "tester" avec de passer à mv, histoire d'eviter de potentiels erreurs.
ps : j'utilise cp pour "tester" avec de passer à mv, histoire d'eviter de potentiels erreurs.
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
7 avril 2012 à 10:45
7 avril 2012 à 10:45
à mon avis ce n'est pas nécessaire. Regarde le man de mv, je pense qu'il y aura une option qui te conviendra pour tester.
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 419
6 avril 2012 à 11:46
6 avril 2012 à 11:46
Salut,
Une autre possibilité :
Une autre possibilité :
#!/bin/bash mkdir -p ebooks musics movies for fic in * do case "${fic##*.}" in epub|pdf) cp -v "${fic}" ebooks/ ;; mp3|ogg|wav) cp -v "${fic}" musics/ ;; avi|mkv|mp4) cp -v "${fic}" movies/ ;; *) ;; esac done
periplasme
Messages postés
391
Date d'inscription
vendredi 22 avril 2011
Statut
Membre
Dernière intervention
5 février 2013
53
6 avril 2012 à 18:07
6 avril 2012 à 18:07
cette solution me semble un poil plus elegeante que celle de charSniper, je vais donc l'adopter !
merci à tous pour votre aide !
merci à tous pour votre aide !