Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".
Test de l'ISO d'Ubuntu francophone : nous avons besoin de testeurs pour la version francophone d'Ubuntu 14.04. Liens et informations ici.

Attention, une faille de sécurité dans bash a récemment été rapportée, il est recommandé de mettre à jour son système (plus de détails)

#1 Le 23/03/2013, à 20: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, à 10:11

aglesia

Re : [Script]décompresser plusieurs fichiers dans le même répertoire

Merci pour ce script smile


L'erreur est humaine...
Si votre PC plante, c'est qu'il est humain :D

Des virus ? C'est quoi ça déjà ? MicroQuoi ?

Hors ligne

#3 Le 10/04/2013, à 20: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, à 16: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, à 18: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

Ubuntu 14.04.4 LTS 32 bits
Intel(R) Core(TM)2 Duo CPU     E7400  @ 2.80GHz

Hors ligne

#6 Le 25/08/2013, à 18: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, à 18:54)

Hors ligne

Haut de page ↑