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 29/08/2010, à 11:04

DomS

Dézipper plusieurs fichiers zip d'un même dossier

C'est une astuce que j'ai trouvée en surfant sur le web.
Ce n'est pas très bien mais je vais faire un copier-coller de ce que j'ai trouvé, histoire de la faire partager à tous.
Dans le dossier où sont les .zip

ls *zip | xargs -i unzip {} 
ou ls *zip | xargs -i unzip {} && rm *zip   (si l'on souhaite supprimer les zip à la fin)

Les explications :
xargs lit sur l'entrée standard (la sortie du ls)
les accolades (qui necessitent -i) permettent de dire ou placer l'argument lu dans la commande, à cet endroit. On peut s'en passer, avec une commande plus complexe ou l'argument n'arrive pas forcement en fin de commande, ça peut-etre utile, trés utile même smile
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, on comprend 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 très 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.

Le lien d'origine : http://www.commentcamarche.net/forum/affich-861605-unzip-plusieurs-fichier


PC fixe :  xubuntu 14.10
Portable : ubuntu 14.04

Hors ligne

#2 Le 30/08/2010, à 15:54

sputnick

Re : Dézipper plusieurs fichiers zip d'un même dossier

You win the famous "Useless use of ls" !

echo *zip | xargs -i unzip {}

ou encore en plus facile à mémoriser :

for i in *zip; do unzip "$i"; done

On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne