#!/bin/bashliste_rep=folder/*
echo"LISTE REP :"$liste_repfor rep in "$liste_rep"doecho"AFFICHE REP :"$repfor fichier in $liste_rep/*.tar.gz
do#- Tu peux utilisé cd avec dirname... cd $(dirname ...)#- Non, soit tu fais : cd "$rep" les guillements c’est pour être robuste aux espaces.#ERROR cd $(liste_rep)cd"$rep"echo"FICHIER :"$fichier
tar -zxvf $fichier#- Ajouter un cd pour retourner dans le répertoire précédent.#- il faut lancer cd - ça revient au répertoire où tu étais précédemment.#ERROR cd /cd -
donedoneexit
Néanmoins on peut faire plus simple : (avec 2 boucles)
#!/bin/bashliste_rep=folder/*
for rep in "$liste_rep"docd"$rep"for fichier in *.tar.gz
do
tar -zxvf $fichierdonecd -
doneexit
Autre solution avec une seule boucle. On profite que bash sait étendre plusieurs *
#!/bin/bashfor fichier in folder/*/*.tar.gz
dorep=$( dirname "$fichier")cd"$rep"
tar -zxvf $fichiercd -
doneexit
L’avantage de la deuxième solutions c’est que c’est plus court. L’inconvénient c’est que tu as beaucoup plus de changement de répertoire.
Le cd - affiche le répertoire de destination, si ça pollue ton affichage, il faut rediriger la sortie vers /dev/null.
Sinon, je n’ai pas vérifié, il est probable qu’il y ait des erreurs de syntaxes.
Une dernière pour la route, on reprend la première solution et on vire la boucle. N’hésite pas a faire man des commandes utilisées.
#!/bin/bashliste_rep=folder/*
for rep in "$liste_rep"docd"$rep"echo *.tar.gz | xargs -n 1 tar -zxvf
cd -
doneexit
[^] # Re: Boucle correcte - destination erroné
Posté par Anthony Jaguenaud . En réponse au message tar : <chemin ver le fichier/file.tar.gz> : non trouvé dans l'archive. Évalué à 2.
Je reprends et termine.
Néanmoins on peut faire plus simple : (avec 2 boucles)
Autre solution avec une seule boucle. On profite que bash sait étendre plusieurs
*L’avantage de la deuxième solutions c’est que c’est plus court. L’inconvénient c’est que tu as beaucoup plus de changement de répertoire.
Le
cd -affiche le répertoire de destination, si ça pollue ton affichage, il faut rediriger la sortie vers/dev/null.Sinon, je n’ai pas vérifié, il est probable qu’il y ait des erreurs de syntaxes.
Une dernière pour la route, on reprend la première solution et on vire la boucle. N’hésite pas a faire
mandes commandes utilisées.