Bonjour à tous,
Je viens de finir d’écrire un petit script, et je tiens à le partager.
Donc en gros, c’est un script qui permet d’aller chercher toutes les archives présentes dans le répertoire utilisateur (récursivement) au format peu recommandé sous GNU/Linux (zip, rar et ace pour l’instant), et de les convertir proprement en archives de type tar.gz.
C’est pas un script très difficile à écrire pour les connaisseurs du shell, mais c’est quand même pas mal utile pour les jeunes loups qui viennent d’entrer dans le monde du libre, ça leur permet de ne pas garder les formats peu recommandés, et aussi d’être un peu plus dans la philosophie du libre, voyez ça comme vous voulez :smt002.
Par contre c’est un script écrit en csh, donc pour ceux n’ayant pas un shell csh en natif, la commande pour exécuter :
NB: Il gère aussi le taux de compression de gzip, donc il suffit de lui donner l’argument qui va bien, exemple :
Pour ce qui est des paquets requis :
- unrar (et pas unrar-free qui est peut-être free, mais mauvais…)
- unace (si pas de .ace à traiter, pas obligatoire)
- unzip (même chose)
Voici le code :
[code]#!/bin/csh -f
requis : csh, unrar, unace, unzip
#--------free-arch-1.0--------#
###############################
Traitement des archives zip
###############################
foreach archives_zip ( ls *.zip
)
mkdir dossiertempfarchive
mv $archives_zip dossiertempfarchive
cd dossiertempfarchive
unzip $archives_zip
rm $archives_zip
set prefixe = $archives_zip:r
set prefixetar = $prefixe.tar
tar cvf $prefixetar *
if ( $#argv == 1) then
if (
gzip $1 $prefixetar
else
gzip $prefixetar
endif
mv $prefixetar.gz …/
cd …/
rm -R dossiertempfarchive
end
###############################
Traitement des archives rar
###############################
foreach archives_rar ( ls *.rar
)
mkdir dossiertempfarchive
mv $archives_rar dossiertempfarchive
cd dossiertempfarchive
unrar x -r $archives_rar
rm $archives_rar
set prefixe = $archives_rar:r
set prefixetar = $prefixe.tar
tar cvf $prefixetar *
if ( $#argv == 1) then
if (
gzip $1 $prefixetar
else
gzip $prefixetar
endif
mv $prefixetar.gz …/
cd …/
rm -R dossiertempfarchive
end
##########################################
Traitement des archives ace avec unace
##########################################
foreach archives_ace ( ls *.ace
)
mkdir dossiertempfarchive
mv $archives_ace dossiertempfarchive
cd dossiertempfarchive
unace e x $archives_ace
rm $archives_ace
set prefixe = $archives_ace:r
set prefixetar = $prefixe.tar
tar cvf $prefixetar *
if ( $#argv == 1) then
if (
gzip $1 $prefixetar
else
gzip $prefixetar
endif
mv $prefixetar.gz …/
cd …/
rm -R dossiertempfarchive
end
set script = find ~ -name free-arch
foreach fichiers (ls *
)
if ( -d $fichiers ) then
cd $fichiers
csh -f $script # —> Appels recursifs
cd …
endif
end[/code]
Voilà, c’est un script simple, mais que je ferais évoluer dès que j’aurais des idées.
N’hésitez pas à me faire part de toutes vos remarques/idées :smt002