Décompresser des archives dans des dossiers multiples sous Linux (2)

Hier, j’exposais mon problème (et sa solution) d’archives en pagaille : « Dans la série des petits problèmes du quotidien qui peuvent prendre des heures ou quelques minutes : en voici un nouveau. Le problème est le suivant : j’ai un dossier qui contient 544 sous-dossiers. Chacun de ces sous dossiers contient un certain nombre d’archives .zip. Ce que je veux est assez simple : obtenir au final mes 544 dossiers avec ce que contenaient les fichiers .zip. Accessoirement, je veux que les fichiers .zip dégagent. »

Aujourd’hui, j’ai exactement le même problème sauf que c’est avec des fichiers .rar qui peuvent eux même contenir des fichiers .rar. Je veux toujours que les fichiers .rar originaux dégagent. Comme je ne connais pas l’option pour choisir le chemin de destination de décompression pour la commande rar (et comme j’avais pas le temps de chercher), j’ai fait autrement. On rentre dans le dossier, on extrait l’archive, on supprime tout ce qui s’appelle nomDeLArchive.r* (car une archive rar peut être sur plusieurs fichiers du genre rO1, r02, …) et on retourne à la racine. Bref, voilà ce que cela donne :

#!/bin/sh
for j in ` find . -name *.rar`
do
	cd `dirname "$j"`
	rar e `basename "$j"` -o+
	fname=`basename "$j"`
	rm -rf ${fname%.*}.r*
	cd ..
done

Au final, 1532 fichiers traités en 5 minutes.

Cette entrée a été publiée dans Pro, avec comme mot(s)-clef(s) , . Vous pouvez la mettre en favoris avec ce permalien.

2 réponses à Décompresser des archives dans des dossiers multiples sous Linux (2)

  1. MiniPomme dit :

    Pour la compression (de tous les pdf d’un dossier) :

    :~ $ cd /ton/dossier
    :dossier $ find . -name '*.pdf' -exec zip ./{}.zip {} \;

    le -exec serais pas mieux dans ton code ?

  2. Julien Quéré dit :

    Effectivement, c’est beaucoup plus simple (et efficace) comme ça ! Merci du tips :D

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>