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

Il y a quelques temps, j’avais du faire un petit script pour de la décompression d’archives multiples sous Linux. Le script est utilisé assez fréquemment. Mais aujourd’hui, l’utilisation commence à devenir un peu plus intensive. Il s’agit de traiter, d’une commande, une plus grosse quantité d’archives. Concrètement, le script peut mettre quelques heures à s’éxecuter.

Par conséquent, il faudrait avoir un rapport à la fin de l’exécution du script. En effet, on ne peut pas lancer un script pendant une nuit entière sans avoir de rapport final. L’idée est donc de reprendre le script précédemment développé et de faire ce qui suit:

  • Rendre rar un peu moins verbeux. C’est l’option -idq qui fait ça. Elle bloque tout les messages sauf les warnings / erreurs.
  • Vérifier que chaque exécution de rar s’est bien passée. Il s’agit d’utiliser if [ $? = 0 ]; qui se traduit par Est-ce que la dernière commande exécutée à retourné 0?.
  • Faire un bilan général de l’exécution. Rien de bien compliqué, on place des compteurs un peu partout. Il faut aussi penser à garder de coté le nom des archives où ça ne s’est pas bien passé.
  • Ne supprimer que les archives dont on est certains qu’elles ont bien été décompressées.

Au final,voilà ce que donne le script:

#!/bin/sh
#Script de désarchivage de rar en masse
#Réalisé par Julien Quéré - http://webd.fr
 
#Variables de couleur
VERT="\\033[1;32m"
NORMAL="\\033[0;39m"
ROUGE="\\033[1;31m"
BLEU="\\033[1;34m"
 
#Compteurs d'erreur, de traitement et de désarchivages valides
errorCpt=0;
passCpt=0;
okCpt=0;
 
clear
#On boucle sur la liste des résultats du find
for j in ` find . -name *.rar`
do
	echo "$BLEU[Start] --- Désarchivage de $j ---$NORMAL"
 
	#On Derare
	rar e $j -o+ -idq 
 
	#On réagit en fonction de la présence ou non d'une erreur
      	if [ $? = 0 ]; then
		echo "$VERT[OK] --- $j désarchivé avec succès ---"
		okCpt=`expr $okCpt + 1`
 
		#On Supprime tout les fichier .r* de l'archive qui s'est bien désarchivée
		rm -rf ${j%.*}.r*
      	else
		echo "\n$ROUGE[FAIL] --- $j non-désarchivé ---"
		errorCpt=`expr $errorCpt + 1`
		errorMsg="$errorMsg $j \n":
      	fi
      	passCpt=`expr $passCpt + 1`
done
 
#Affichage du rapport
echo "\n\n$BLEU--------------- RAPPORT ---------------";
echo "$BLEU Archives traitées            : $passCpt";
echo "$VERT Archives traitées avec succès: $okCpt";
 
if [ $errorCpt -gt 0 ]; then
	echo "$ROUGE Archives échouées            : $errorCpt";
 	echo "\n$ROUGE Liste des désarchivages échoués: \n"
	echo $errorMsg
fi
#On repasse la console en normal
echo "$NORMAL"

Bref, un petit script simple mais qui fait gagner pas mal de temps. Je conseille même d’en faire un alias dans votre bashrc. Voici un exemple de résultat:

screenscriptderar

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

Une réponse à Décompresser des archives dans des dossiers multiples sous Linux (3)

  1. Ping : Webd » Décompresser des archives dans des dossiers multiples sous Mac

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>