Pages : 1
#1 Le 17/06/2005, à 18:01
- meskiangasher
Script shell pour le parcours récursif d'un repertoire
Bonjour.
Je cherche à dézipper tous les fichiers d'un répertoire et de ses sous-répertoires.
N'ayant pas trouvé de commande ad-hoc et pour éviter de tout refaire, j'ai pensé que le plus simple serait de modifier un script de parcours récursif de l'arborescence d'un répertoire.
Savez-vous où en trouver un ?
PS : je sais que c'est un grand classique de la programmation shell, vous excuserez le newbie que je suis ...
Hors ligne
#2 Le 17/06/2005, à 18:27
- devloop
Re : Script shell pour le parcours récursif d'un repertoire
tu peux utiliser la commande find :
find . -type f -name "*.zip" -exec unzip {} \;
en étant dans le répertoire du début
Hors ligne
#3 Le 17/06/2005, à 18:32
- coffee
Re : Script shell pour le parcours récursif d'un repertoire
c'est pas un grand classique et c'est chaud à faire
for i in ` find . -name *.zip`
do
echo "extraction de $i"
unzip $i -d `echo "$i" | sed 's/\//\n/g' | sed '$d' | awk '{printf "%s/", $0 }' | sed 's/\/\//\//g'`
done
si les fichiers ont pas d'espaces, ça devrait être ok.
pas besoin de recursif à tous les coups
le recursif en bash est une tres mauvaise idée d'ailleurs.
Nom d'un tupperware habillé en streetware mangeant de la confiture de pouère et qui se dite où est-ce que je suis ouère !
Tiens mon blog
Les blagues sous forme de fausses aides sont susceptible de ban (ex: rm)
Hors ligne
#4 Le 17/06/2005, à 19:13
- meskiangasher
Re : Script shell pour le parcours récursif d'un repertoire
Merci pour vos réponses si rapides. Je vais essayer çà.
Dernière modification par meskiangasher (Le 17/06/2005, à 19:15)
Hors ligne
#5 Le 17/06/2005, à 20:10
- coffee
Re : Script shell pour le parcours récursif d'un repertoire
for i in ` find . -name *.zip`
do
echo "extraction de $i"
unzip $i -d `dirname "$i"`
done
Une petite simplification du code (toute petite la simplification )
Nom d'un tupperware habillé en streetware mangeant de la confiture de pouère et qui se dite où est-ce que je suis ouère !
Tiens mon blog
Les blagues sous forme de fausses aides sont susceptible de ban (ex: rm)
Hors ligne
#6 Le 17/06/2005, à 21:08
- sksbir
Re : Script shell pour le parcours récursif d'un repertoire
heu, coffee, sans vouloir de vexer, la syntaxe de devloop est bcps plus simple non ?
sinon, et de mémoire, on peut aussi faire:
find . -type f -name "*.zip" -print | xargs unzip
[edit] ha oui, c'est plus simple, mais surtout , ça va tout décompresser dans le même répertoire (celui d'où on lance la commande)
donc,
find . -type f -name "*.zip" -print | xargs gzip -d
ça devrait aussi le faire...
Dernière modification par sksbir (Le 17/06/2005, à 21:19)
Hors ligne
#7 Le 18/06/2005, à 05:40
- coffee
Re : Script shell pour le parcours récursif d'un repertoire
J'ai juste lu les man, donc oui la syntaxe de devloop est plus simple mais comme tu as mis dans ton edit, tu mets tout dans le même repertoire donc je pense que ce n'est pas le but...
gzip gere les .zip?
avec unzip ça ne marche pas non plus... mais xargs est surement une bonne idée mais pas eu le temps de matter
Nom d'un tupperware habillé en streetware mangeant de la confiture de pouère et qui se dite où est-ce que je suis ouère !
Tiens mon blog
Les blagues sous forme de fausses aides sont susceptible de ban (ex: rm)
Hors ligne