#1 Le 23/03/2013, à 19:05
- noyan
[Script]décompresser plusieurs fichiers dans le même répertoire
Bonsoir,
je propose un script qui permet de décompresser plusieurs fichiers rar, zip, et 7z dans le même répertoire. Le script gère les fichiers compressés avec mots de passe.
#!/bin/bash
if [ $1 ]
then pass="-p$1 "
else pass=""
fi
if ls *.rar
then echo "décompression des fichiers rar"
for f in *.rar;do unrar x -o- $pass "$f";done
fi
if ls *.zip
then echo "décompression des fichiers zip"
for f in *.zip;do unzip -n $pass "$f";done
fi
if ls *.7z
then echo "décompression des fichiers 7z"
for f in *.7z;do 7z x $pass "$f";done
fi
echo -e "Voulez-vous supprimer les fichiers compressés [O/N] ?"
read REP
case $REP in
N|n)
echo -e " Aucun fichier n'a été supprimé "
exit
;;
O|o|*)
mv *.rar /home/${USER}/.local/share/Trash/files/
mv *.zip /home/${USER}/.local/share/Trash/files/
mv *.7z /home/${USER}/.local/share/Trash/files/
echo -e " Les fichiers ont été mis dans la corbeille "
exit
;;
esac
Je l'ai appelé décomp et je l'ai placé dans /bin/decomp
l'utilisation est simple: decomp + "Entrée" ou decomp motdepasse + "Entrée"
Il est forcément possible d'ajoûter d'autres extensions pour adapter le script au besoin de chacun.
Hors ligne
#2 Le 24/03/2013, à 09:11
- aglesia
Re : [Script]décompresser plusieurs fichiers dans le même répertoire
Merci pour ce script
L'erreur est humaine...
Si votre PC plante, c'est qu'il est humain :D
Hors ligne
#3 Le 10/04/2013, à 19:51
- Cyrille_tux
Re : [Script]décompresser plusieurs fichiers dans le même répertoire
Le script ne gère pas les erreurs :
if ls *.rar
> then echo "décompression des fichiers rar"
> for f in *.rar;do unrar x -o- $pass "$f";done
> fi
ls: impossible d'accéder à *.rar: Aucun fichier ou dossier de ce type
Il est bien d'indiquer/de forcer une valeur pour la commande "exit".
=> exit 0 par exemple quand c'est OK
=> exit 1 par exemple quand c'est KO
On peut remplacer :
mv *.rar /home/${USER}/.local/share/Trash/files/
mv *.zip /home/${USER}/.local/share/Trash/files/
mv *.7z /home/${USER}/.local/share/Trash/files/
Par :
mv *.{rar,zip,7z} /home/${USER}/.local/share/Trash/files/ > /dev/null 2>&1
Hors ligne
#4 Le 25/08/2013, à 15:13
- noyan
Re : [Script]décompresser plusieurs fichiers dans le même répertoire
Bonjour à tous,
En suivant les conseils de Cyrille, je propose une version 2 à mon script.
J'ai éliminé les messages d'erreurs
- ajouté la possibilité de décompresser en conservant l'arboressance en tapant decomp -p
- ajouté une aide en tapant decomp -h
#!/bin/bash
#Decomp by Noyan - version 2.0 - 25 Août 2013
version="Decomp by Noyan - version 2.0 - 25 Août 2013"
aide1="\033[1mdecomp\033[0m \t\t\t\tdécompresse les fichiers sans tenir compte l'arboressance des répertoires"
aide2="\033[1mdecomp motdepasse\033[0m \t\tdécompresse les fichiers suivant le mot de passe"
aide3="\033[1mdecomp -p\033[0m \t\t\tdecompresse les fichiers en respectant l'arboressance des répertoires"
aide4="\033[1mdecomp motdepasse -p\033[0m \t\tdecompresse les fichiers suivant le mot de passe, en respectant l'arboressance des répertoires"
aide5="\033[1mdecomp -v\033[0m \t\t\tAffiche la version du fichier"
aide6="\033[1mdecomp -h\033[0m \t\t\tAffiche cette page d'aide"
extract_path=""
pass=""
extract_rar="e"
extract_zip="-j"
extract_7z="e"
argument1=""
argument2=""
fichier=""
# Analyse des options
#--------------------
#
# options $1
if [ $1 ]
then argument1=$1
fi
if [ $2 ]
then argument2=$2
fi
if [ $argument1 ] && test $argument1 = "-p"
then argument2=$argument1
fi
if [ $argument1 ] && test $argument1 = "-v"
then echo $version
exit 1
fi
if [ $argument1 ] && test $argument1 = "-h"
then
echo -e $aide1
echo -e $aide2
echo -e $aide3
echo -e $aide4
echo -e $aide5
echo -e $aide6
exit 1
fi
if [ $argument1 ] && test $argument1 != "-p"
then pass="-p$1 "
fi
#
# options $2
if [ $argument2 ] && test $argument2 = "-p"
then extract_rar="x"
extract_zip="-n"
extract_7z="x"
fi
# decompressions
if [ -f *.rar ];
then
echo "Recherche de fichiers rar"
for f in *.rar;do unrar $extract_rar -o- $pass "$f";done
else
fichier=$((++fichier))
fi
if [ -f *.zip ];
then
echo "Recherche de fichiers zip"
for f in *.zip;do unzip $extract_zip $pass "$f";done
else
fichier=$((++fichier))
fi
if [ -f *.7z ];
then
echo "Recherche de fichiers 7z"
for f in *.7z;do 7z $extract_7z $pass "$f";done
else
fichier=$((++fichier))
fi
if test $fichier = 3
then
echo "aucun fichier compressé n'a été trouvé"
exit 1
else
# Supression des fichiers compressés
echo -e "Voulez-vous supprimer les fichiers compressés [O/N] ?"
read REP
case $REP in
N|n)
echo -e " Aucun fichier n'a été supprimé "
exit 1
;;
O|o|*)
mv *.{rar,zip,7z} /home/${USER}/.local/share/Trash/files/ > /dev/null 2>&1
echo -e " Les fichiers ont été mis dans la corbeille "
exit 0
;;
esac
fi
Enfin le script doit être placé dans /bin/ pour pouvoir l'utiliser dans n'importe quel répertoire.
Noyan
Hors ligne
#5 Le 25/08/2013, à 17:01
- ar barzh paour
Re : [Script]décompresser plusieurs fichiers dans le même répertoire
# Supression des fichiers compressés
echo -e "Voulez-vous supprimer les fichiers compressés [O/N] ?"
read REP
case $REP in
N|n)
echo -e " Aucun fichier n'a été supprimé "
exit 1
;;
O|o|*)
mv *.{rar,zip,7z} /home/${USER}/.local/share/Trash/files/ > /dev/null 2>&1
echo -e " Les fichiers ont été mis dans la corbeille "
exit 0
;;
esac
pour moi c'est pas très bon, si on répond autre chose que n|N , les fichiers seront supprimés
utilise plutôt quelque chose comme ça
while :
do
echo -e "Voulez-vous supprimer les fichiers compressés [O/N] ?"
read REP
case $REP in
N|n)
echo -e " Aucun fichier n'a été supprimé "
exit 1
;;
O|o)
mv *.{rar,zip,7z} /home/${USER}/.local/share/Trash/files/ > /dev/null 2>&1
echo -e " Les fichiers ont été mis dans la corbeille "
exit 0
;;
*)
echo -e " Répondre par o ou O ou n ou N "
;;
esac
done
PC : B760M DS3H DDR4, 12th Gen Intel(R) Core(TM) i3-12100, RAM DDR4 8GiB -2400 Ubuntu 20.04, 22.04, 24.04 (en test )
Portable1 : ThinkPad P50 I7-6820HQ, 16G0 Ram Ubuntu 22.04 Ubuntu 24.04 , W10-PRO( en voyage )
Portable2 : T5750 @ 2.00GHz RAM 1GiB DDR2 667 Mhz Ubuntu 20.04 ( batterie HS )
stourm a ran war bep tachenn (Angela Duval) ( Je combats sur tous les fronts )
Hors ligne
#6 Le 25/08/2013, à 17:53
- noyan
Re : [Script]décompresser plusieurs fichiers dans le même répertoire
Merci ar barzh
du coup j'ai intégré la modif que tu m'as conseillé.
j'ai également revu les conditions de recherche de fichiers rar, zip ou 7z
#!/bin/bash
#Decomp by Noyan - version 2.1 - 25 Août 2013
version="Decomp by Noyan - version 2.1 - 25 Août 2013"
aide1="\033[1mdecomp\033[0m \t\t\t\tdécompresse les fichiers sans tenir compte l'arboressance des répertoires"
aide2="\033[1mdecomp motdepasse\033[0m \t\tdécompresse les fichiers suivant le mot de passe"
aide3="\033[1mdecomp -p\033[0m \t\t\tdecompresse les fichiers en respectant l'arboressance des répertoires"
aide4="\033[1mdecomp motdepasse -p\033[0m \t\tdecompresse les fichiers suivant le mot de passe, en respectant l'arboressance des répertoires"
aide5="\033[1mdecomp -v\033[0m \t\t\tAffiche la version du fichier"
aide6="\033[1mdecomp -h\033[0m \t\t\tAffiche cette page d'aide"
extract_path=""
pass=""
extract_rar="e"
extract_zip="-j"
extract_7z="e"
argument1=""
argument2=""
fichier=""
# Analyse des options
#--------------------
#
# options $1
if [ $1 ]
then argument1=$1
fi
if [ $2 ]
then argument2=$2
fi
if [ $argument1 ] && test $argument1 = "-p"
then argument2=$argument1
fi
if [ $argument1 ] && test $argument1 = "-v"
then echo $version
exit 1
fi
if [ $argument1 ] && test $argument1 = "-h"
then
echo -e $aide1
echo -e $aide2
echo -e $aide3
echo -e $aide4
echo -e $aide5
echo -e $aide6
exit 1
fi
if [ $argument1 ] && test $argument1 != "-p"
then pass="-p$1 "
fi
#
# options $2
if [ $argument2 ] && test $argument2 = "-p"
then extract_rar="x"
extract_zip="-n"
extract_7z="x"
fi
# decompressions
if ls *.rar > /dev/null 2>&1 ;
then
echo "Recherche de fichiers rar"
for f in *.rar;do unrar $extract_rar -o- $pass "$f";done
else
fichier=$((++fichier))
fi
if ls *.zip > /dev/null 2>&1 ;
then
echo "Recherche de fichiers zip"
for f in *.zip;do unzip $extract_zip $pass "$f";done
else
fichier=$((++fichier))
fi
if ls *.7z > /dev/null 2>&1 ;
then
echo "Recherche de fichiers 7z"
for f in *.7z;do 7z $extract_7z $pass "$f";done
else
fichier=$((++fichier))
fi
if test $fichier = 3
then
echo "aucun fichier compressé n'a été trouvé"
exit 1
else
# Supression des fichiers compressés
while :
do
echo -e "Voulez-vous supprimer les fichiers compressés [O/N] ?"
read REP
case $REP in
N|n)
echo -e " Aucun fichier n'a été supprimé "
exit 1
;;
O|o)
mv *.{rar,zip,7z} /home/${USER}/.local/share/Trash/files/ > /dev/null 2>&1
echo -e " Les fichiers ont été mis dans la corbeille "
exit 0
;;
*)
echo -e " Répondre par o ou O ou n ou N "
;;
esac
done
fi
Dernière modification par noyan (Le 25/08/2013, à 17:54)
Hors ligne
#7 Le 09/05/2022, à 09:34
- OpenPat
Re : [Script]décompresser plusieurs fichiers dans le même répertoire
Excellent !
Je sais que c'est plutôt un déterrage de sujet.
Cependant ce script est si efficace qu'il mérite bien d'être remis à l'affiche...
Hors ligne