• [^] # Re: Boucle correcte - destination erroné

    Posté par . En réponse au message tar : <chemin ver le fichier/file.tar.gz> : non trouvé dans l'archive. Évalué à 2.

    #!/bin/bash
    #- Ici bash n’imterprete pas le '*' donc il stocke 'folder/*'
    liste_rep=folder/*
    #- Sur le echo, met les guillemets pour vois ce qu’il y a vraiment dans la variable.
    echo "$liste_rep"
    #- Pour voir la diff.
    echo $liste_rep
    #- On supprime les guillemets du coup. Ne marchera pas avec des espaces dans les noms.
     for rep in $liste_rep
     do
     cd "$rep"
     for fichier in *.tar.gz
     do
     #echo "VAR FICHIER :" $rep
     tar -zxvf $fichier
     done
     cd -
     done
    #tar -zxvf $fichier/*.tar.gz --directory $fichier/
    exit

    Si je comprends, par exemple : dans le répertoire 001 tu as deux fichiers : toto.tar.gz et tata.tar.gz contenant bin/mon_logiciel tous les deux.
    Tu voudrais avoir : 001/toto/bin/mon_logiciel et 001/tata/bin/mon_logiciel.

    Pour ça, tu ajoutes ça avant le tar :

    mkdir $(basename $fichier .tar.gz)
    cd $(basename $fichier .tar.gz)
    tar xzf ../$fichier
    cd .. #Retourne où sont les tgz.

    Par contre le cd - ne pourra pas retourner vers le répertoire voulu... Regarde du côté de pushd et popd.