Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 ! smile

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. tongue


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

Hors ligne

#6 Le 14/11/2009, à 16:50

Balooforever

Re : [Résolu][Script Bash] Parcourir et extraire

Je vais essayer big_smile

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 ! smile

Hors ligne