Aller au contenu

[résolu]pb sur script shell


-lsl-

Messages recommandés

Voila j'ai fait un script shell qui regarde dans un tous les dossiers et sous repertoire d'un dossier photos , puis renomme ne masse tous les fichiers jpg qu'il trouve avec la date et le nom du repetoire qui contient les photos , puis les photos renommés par répertoires ou sous répertoires sont mis en tar.gz et (lui aussi renommé avec date te nom du repertoire!) et le tar .gz est envoyé vers directement vers un dossier photostock

Mon pb c'ést que mon script ne marche que si les dossiers et sous dossiers ainsi que les jpg qui doivent être renommer ne posséde pas d'espace dans leur nom ....... si q peut m'aider je pense que cela vient du :

for rep in ` find $HOME/photos/?* -type d` ;do

XX

done

#!/bin/sh

#**************** JpgPackager 0.3*****************
#**************** by LSL 2004 ********************
#**************** under anjuta 1.2.2 *************


if  [ ! -d  $HOME/photostock ]; then
mkdir $HOME/photostock
fi
if  [ ! -d  $HOME/photos ]; then
mkdir $HOME/photos
fi
#* crée le fichier stock et photos si ils n'existent pas *
echo "ce script va scanner les repertoires " 

find $HOME/photos/?* -type d 2> $HOME/photos/tests.txt
testo= `cat $HOME/photos/tests.txt`


if test "$testo" = ""; then

for rep in ` find $HOME/photos/?* -type d`;do

echo "il y a un repertoire:" $rep
dat=`date +%d:%b:%y | sed -e "s/[:]//g"`
repdat=$rep$dat
e=1

frepdat=`echo $repdat | sed -e "s/[/]/-/g" | sed -e "s/-//1"`
ls $rep/*.jpg 2> $rep/test.txt
v=`cat $rep/test.txt`


if test "$v" != ""; then
echo "il n y a pas de jpg dans le dossier"
else
echo "il y a des jpg dans le dossier "

for fich in $rep/*.jpg;do

if [ -f $fich ]; then
mv $fich   $rep/$e$frepdat.jpg
e=`expr $e + 1`
#*****les fichier trouvés jpg sont renommés en masse*******
else
echo "on ne renomera pas les dossiers *.jpg"
fi

done

echo "les jpg vont être archivés et compressés" 
tar -czf  $HOME/photostock/$frepdat.tar.gz	   $rep/*.jpg 
fi
rm -f $rep/test.txt 

done


else 

echo "il n'y a pas de répertoire dans le dossier photos"
fi
rm -f $HOME/photos/tests.txt

Lien vers le commentaire
Partager sur d’autres sites

dat=`date +%d:%b:%y | sed -e "s/[:]//g"`

ou plutôt

dat=`date +%d%b%y`

:D

Là :

frepdat=`echo $repdat | sed -e "s/[/]/-/g" | sed -e "s/-//1"`

je ne vois pas pourquoi tu ne fais pas directement

frepdat=`echo $repdat | sed -e "s/[/]//g"

Je sais que ça ne répond pas à la question, mais normalement Sandeman et Gauret l'ont déjà fait ;)

Lien vers le commentaire
Partager sur d’autres sites

-rem-

:yes::yes:

cela ne fait que 3 mois que je suis sous linux et des que j'ai commencé j'ai appris du shell sur des cours dispo sur le web ... et c'est mon premier script que j'ai en 3 jours plus ou moins ( 2 h par jour dessus en moyenne !) ....

il est vrai que comme c'est un premier script le style est assez nul ....

Mais quand je vois que j'arrive deja à faire un script comme ca !!! avec un niveau qui frise les paquerettes !! c'est ca le linux powaaaa !

soyez indulgent ...mais promis je vais renvoyé mon prog amélioré d'ici peu ... et vous me direz ce qu'il en ai !

(au fait je fais une maitrise de bio po d'info ! ce qui explique le style de prog bétail )

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...