Unzip plusieurs fichier

gtrgib Messages postés 544 Statut Membre -  
 eric -
Bonjour à tous,

Je voudrais déziper plusieurs fichiers en même temps et dans le même répertoire.

Mes fichiers(60) zip sont dans un répertoire, je vais dans ce répertoire et je tape "unzip *.zip" et ça ne fonctionne pas, les fichiers restent tous zipé.

J'ai le message d'erreur pour chaque fichier :

caution: filename not matched: et le nom du fichier

Merci

4 réponses

  1. eric
     
    Salut,

    ls *zip | xargs -i unzip {}
    auquel tu peux même ajouter: && rm *zip

    a+

    eric
    7
  2. gtrgib Messages postés 544 Statut Membre 9
     
    Salut eric,

    Merci beaucoup ça fonctionné parfaitement:o)

    Peut tu juste m'expliquer s'il te plaît cette ligne de commande?

    ls *zip>>>lister tous les fichiers zip
    | xargs -i>>>>je sais pas
    unzip {}>>>je sais pas pour les {}
    && rm *zip>>>>je suis pas certain pour les &&, ensuite rm *zip c'est pour effacer(remove) tous les fichiers zip.

    Merci
    1
    1. asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426
       
      Bonsoir,

      En fait la deuxieme partie de la commande est à prendre en un seul morceau!
      xargs -i unzip {}
      xargs lit sur l'entrée standard (la sortie du ls)
      les accolades (qui necessitent -i) premettent de dire ou placer l'argument lu dans la commande, a cet endroit tu peut t'en passer, avec un commande plus colmplexe ou l'argument n'arrive pas forcement en fin de commande, ça peut-etre utile, trés utile même :)
      man find, man xargs.
      ça implique aussi de prendre les argument un a un, (le commutateur -n1 et donc inutile)
      ls *zip| xargs -i echo {}" est un fichier zip"
      ls *zip| xargs echo " est un fichier zip"
      ls *zip| xargs -n1 echo " est un fichier zip"
      En observant bien les sorties de ces trois commandes, tu comprendras vite ce qu'il en est! ;)
      Tu pourras vite en déduire que dans le cas présent, -n1 remplacait sans soucis -i {}


      Bon le rm on passe, le && est tres pratique, c'est un test logique.
      cmd && echo "la commande a fonctionné"
      cmd || echo "la commande n'a pas fonctionné"
      Lire ET pour && et OU pour || commande 1 ET commande 2, commande 1 OU commande 2

      Dans ce cas là, les fichier zip sont effacés si et seulement si la décompression s'est bien passée :)

      Un exemple que j'utilises tout les jours:
      Machine1# ssh Machine2 && init 0 && exit
      Machine2# ssh Machine3 && init 0 && exit
      Machine3# init 0 && exit
      Qui a pour effet d'éteindre les trois bestioles en même temps sans que j'y ai accés
      Si une des machines ne comprend pas, l'operation s'arrete, et je conserve la main sur la machine en question et sur celles se trouvant avant dans l'ordre :)

      @++
       ♫ Il suffirait de presque rien...
      0
  3. gtrgib Messages postés 544 Statut Membre 9
     
    Merci bien asevere pour ces informations, je garde ça.

    @+
    0
  4. eric
     
    Je n'ai donc plus rien à ajouter...

    a+

    eric
    0