#1 Le 14/11/2009, à 13:03
- Balooforever
[Résolu][Script Bash] Parcourir et extraire
Bonjour à tous !
J'aurais une petite question, est-il possible de réaliser, en bash, un script qui parcours les répertoires d'un dossier, cherche les fichiers .rar dedans et lance leurs extraction dans le répertoire d'avant ?
Par exemple si j'ai :
/photo/tata/noel/fichier.rar - fichier.rar2
/photo/tata/jour de lan/photos.rar - photos.rar2 - photos.rar3
Lancer le script dans le dossier /photo/tata/ et extraire les fichiers de noel et de jour de lan dans le dossier noel ?
Je ne sais pas si c'est possible du tout, mais ça m'aiderait beaucoup !
Cordialement,
Baloo
Dernière modification par Balooforever (Le 14/11/2009, à 17:43)
Hors ligne
#2 Le 14/11/2009, à 14:24
- Nisaea
Re : [Résolu][Script Bash] Parcourir et extraire
Je pense que c'est possible, mais est-ce que la récursivité fonctionne? Je n'ai jamais testé de script bash récursif.
ça m'intéresse aussi, je vais essayer de faire ça.
Chiastre!
Hors ligne
#3 Le 14/11/2009, à 15:28
- Ph3nix_
Re : [Résolu][Script Bash] Parcourir et extraire
Voila un exemple de script que j'avais fais parcourant récursivement tous les fichiers de manière récursive:
cpt=0
for i in ${list_dir[*]};do
cpt=`expr $cpt + 1`
[ -f "$i" ] && list_file[$cpt]="$i"
[ -d "$i" ] && file_in_rep "$i"
done
Ici la fonction file in rep
#@Paramètres <repertoire>
#@Retourne liste des fichiers dans list_file et liste de repertoire dans list_dir
file_in_rep(){
for i in "$1/"*;do
cpt=`expr $cpt + 1`
[ -f "$i" ] && list_file[$cpt]="$i"
[ -d "$i" ] && list_dir[$cpt]="$i"
done
}
C'est simple La première boucle parcours tous les répertoires présents dans le tableau list_dir, une fonction va se charger de lister les fichiers présents dans les répertoires.
Pour que cela fonctionne de manière récursive, chaque répertoire trouvé va être ajouté a la fin du tableau list_dir pour être parcouru par la suite avec la boucle.
Le script que j'ai codé a peu de chance de fonctionner, mais le principe est la ....
Je l'avais déjà testé et cela est très long ----> conclusion: utilise dir -R <nom_rep> ou une commande semblable
Hiroshima 45 / Chernobyl 86 / Windows '95
Hors ligne
#4 Le 14/11/2009, à 16:17
- Nisaea
Re : [Résolu][Script Bash] Parcourir et extraire
Pour ma part je viens de tester ça.
(fichier rarcurs.sh dans ~/bin/ exécutable)
#!/bin/bash
set *
for i in $@
do
if [ -d $i ]
then
cd $i
rarcurs.sh
elif [ $i = *.rar ]
then
unrar x $i
fi
done
Malheureusement, la récursivité ne fonctionne pas: la machine s'arrête dès qu'elle a arrive à la fin de la première branche de l'arborescence à parcourir, donc seuls quelques fichiers sont décompressés... C'est ben dommage!
Bah j'aurai appris quelque chose ^^
Dernière modification par Nisaea (Le 14/11/2009, à 16:17)
Chiastre!
Hors ligne
#5 Le 14/11/2009, à 16:48
- frafa
Re : [Résolu][Script Bash] Parcourir et extraire
Bonjour,
Genre:
find "$HOME/tonrep" -iname "*rar" -exec unrar e {} \;
Hors ligne
#6 Le 14/11/2009, à 16:50
- Balooforever
Re : [Résolu][Script Bash] Parcourir et extraire
Je vais essayer
Merci !
Hors ligne
#7 Le 14/11/2009, à 16:58
- frafa
Re : [Résolu][Script Bash] Parcourir et extraire
oubliu le (.) point
"*.rar"
Dernière modification par frafa (Le 14/11/2009, à 16:58)
Hors ligne
#8 Le 14/11/2009, à 17:00
- eiger
Re : [Résolu][Script Bash] Parcourir et extraire
Bonjour,
Je n'ai pas tout à fait compris où tu veux que tes fichiers rar soient décompressés, mais en ce qui concerne la recherche récursive de fichiers, il y a une solution très rapide:
find . -name "*.rar" -type f
Ca te donnera tous les fichiers *.rar dans l'arborescence à partir du répertoire courant (d'où le ".").
Et en cherchant bien, tu dois pouvoir tout faire sur une seule ligne avec un truc du genre :
find /photo/tata -name "*.rar" -type f -exec unrar {} xxx \;
Pour "xxx" c'est à toi de voir en fonction des paramètres possibles de unrar et du répertoire où tu souhaites décompresser tes fichiers.
Edit : trop tard ...
Dernière modification par eiger (Le 14/11/2009, à 17:01)
Hors ligne
#9 Le 14/11/2009, à 17:30
- Balooforever
Re : [Résolu][Script Bash] Parcourir et extraire
Marche vraiment super ! Merci !
Hors ligne