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 🙂
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