# Finalisation script BASH besoin d'un peut d'aide

**URL:** <https://www.debian-fr.org/t/finalisation-script-bash-besoin-dun-peut-daide/33924>\
**Category:** Programmation\
**Created:** [Février 21, 2016, 3:23 UTC](https://www.debian-fr.org/t/finalisation-script-bash-besoin-dun-peut-daide/33924 "2016-02-21T03:23:01Z")\
**Posts on this page:** 20\
**Page:** 2

<div class="post-metadata">

**Author:** ![chris38](https://www.debian-fr.org/user_avatar/www.debian-fr.org/chris38/32/12918_2.png) [@chris38](https://www.debian-fr.org/u/chris38)\
**Post date:** [Février 21, 2016, 3:29 UTC](https://www.debian-fr.org/t/finalisation-script-bash-besoin-dun-peut-daide/33924/21 "2016-02-21T03:29:30Z")

</div>

C’est presque terminé !!! tout fonctionne bein comme tu peux le voir, sauf qu’a la fin il veut travailler sur le créer en amont du scipt !!! les fichiers 9-10-11 c’e’st le repertoire créer .

[code]+ REPERTOIRE\_SOURCE=/data/Photos\_reduites

- rep\_absent=!!!..Attention, Le repertoire source n’éxiste pas …!!!
- rep\_vide=Votre repertoire est vide, ajoutez vos fichiers et renouveler l’opération.
- date +%d%m%y
- DATE=160911
- VERT=\033[1;32m
- NORMAL=\033[0;39m
- ROUGE=\033[1;31m
- ROSE=\033[1;35m
- BLEU=\033[1;34m
- BLANC=\033[0;02m
- BLANCLAIR=\033[1;08m
- JAUNE=\033[1;33m
- CYAN=\033[1;36m
- echo Teste de la présence du répertoire ou sont stocké les photos à réduire  
Teste de la présence du répertoire ou sont stocké les photos à réduire
- echo Veuillez patienter quelques instant  
Veuillez patienter quelques instant
- sleep 2
- [! -e /data/Photos\_reduites]
- echo -n \033[1;34mNombre de fichiers à traiter :  
Nombre de fichiers à traiter :+ wc -l
- sed -e /.$/d
- ls -a /data/Photos\_reduites
- var=8
- echo \033[1;32m8  
8
- sleep 2
- [8 -eq 0]
- title=Choisissez la résolution d’image souhaité’
- zenity --title Choisissez la résolution d’image souhaité’ --list --separator= --column=size 160x120 320x240 640x480 800x600 1024x768
- imgsize=1024x768
- [0 != 0]
- sed s/ max//g
- echo 1024x768
- imgsize=1024x768
- [! 1024x768]
- himgsize=1024x768
- awk -Fx { print $1 }
- echo 1024x768
- val1=1024
- imgsize=1024x1024
- echo \033[1;33mLes photos du répertoire courant : \033[1;32m /data/Photos\_reduites \033[0;39m, vont être redimenssionnées aux valeurs suivantes :\033[1;32m 1024x1024\033[0;39m  
Les photos du répertoire courant : /data/Photos\_reduites , vont être redimenssionnées aux valeurs suivantes : 1024x1024
- sleep 2
- cd /data/Photos\_reduites
- date +%d\_%m\_%Y
- date=16\_09\_2011
- mkdir -p 16\_09\_2011
- i=1
- zenity --info --text=Terminé
- echo Redimensionnement de : \033[1;32m SL127994.JPG \033[0;39m
- echo JPG
- tr [:upper:] [:lower:]
- ext=jpg
- out=16\_09\_2011/16\_09\_2011\_1.jpg
- [-f 16\_09\_2011/16\_09\_2011\_1.jpg]
- convert -filter Cubic -resize 1024x1024 SL127994.JPG 16\_09\_2011/16\_09\_2011\_1.jpg
- expr 1 + 1
- i=2
- echo Redimensionnement de : \033[1;32m SL127995.JPG \033[0;39m
- echo JPG
- tr [:upper:] [:lower:]
- ext=jpg
- out=16\_09\_2011/16\_09\_2011\_2.jpg
- [-f 16\_09\_2011/16\_09\_2011\_2.jpg]
- convert -filter Cubic -resize 1024x1024 SL127995.JPG 16\_09\_2011/16\_09\_2011\_2.jpg
- expr 2 + 1
- i=3
- echo Redimensionnement de : \033[1;32m SL127996.JPG \033[0;39m
- echo JPG
- tr [:upper:] [:lower:]
- ext=jpg
- out=16\_09\_2011/16\_09\_2011\_3.jpg
- [-f 16\_09\_2011/16\_09\_2011\_3.jpg]
- convert -filter Cubic -resize 1024x1024 SL127996.JPG 16\_09\_2011/16\_09\_2011\_3.jpg
- expr 3 + 1
- i=4
- echo Redimensionnement de : \033[1;32m SL127997.JPG \033[0;39m
- echo JPG
- tr [:upper:] [:lower:]
- ext=jpg
- out=16\_09\_2011/16\_09\_2011\_4.jpg
- [-f 16\_09\_2011/16\_09\_2011\_4.jpg]
- convert -filter Cubic -resize 1024x1024 SL127997.JPG 16\_09\_2011/16\_09\_2011\_4.jpg
- expr 4 + 1
- i=5
- echo Redimensionnement de : \033[1;32m SL128000.JPG \033[0;39m
- echo JPG
- tr [:upper:] [:lower:]
- ext=jpg
- out=16\_09\_2011/16\_09\_2011\_5.jpg
- [-f 16\_09\_2011/16\_09\_2011\_5.jpg]
- convert -filter Cubic -resize 1024x1024 SL128000.JPG 16\_09\_2011/16\_09\_2011\_5.jpg
- expr 5 + 1
- i=6
- echo Redimensionnement de : \033[1;32m SL128001.JPG \033[0;39m
- echo JPG
- tr [:upper:] [:lower:]
- ext=jpg
- out=16\_09\_2011/16\_09\_2011\_6.jpg
- [-f 16\_09\_2011/16\_09\_2011\_6.jpg]
- convert -filter Cubic -resize 1024x1024 SL128001.JPG 16\_09\_2011/16\_09\_2011\_6.jpg
- expr 6 + 1
- i=7
- echo Redimensionnement de : \033[1;32m SL128002.JPG \033[0;39m
- echo JPG
- tr [:upper:] [:lower:]
- ext=jpg
- out=16\_09\_2011/16\_09\_2011\_7.jpg
- [-f 16\_09\_2011/16\_09\_2011\_7.jpg]
- convert -filter Cubic -resize 1024x1024 SL128002.JPG 16\_09\_2011/16\_09\_2011\_7.jpg
- expr 7 + 1
- i=8
- echo Redimensionnement de : \033[1;32m SL128003.JPG \033[0;39m
- echo JPG
- tr [:upper:] [:lower:]
- ext=jpg
- out=16\_09\_2011/16\_09\_2011\_8.jpg
- [-f 16\_09\_2011/16\_09\_2011\_8.jpg]
- convert -filter Cubic -resize 1024x1024 SL128003.JPG 16\_09\_2011/16\_09\_2011\_8.jpg
- expr 8 + 1
- i=9
- echo Redimensionnement de : \033[1;32m \*.[pP][nN][gG] \033[0;39m
- echo [pP][nN][gG]
- tr [:upper:] [:lower:]
- ext=[pp][nn][gg]
- out=16\_09\_2011/16\_09\_2011\_9.[pp][nn][gg]
- [-f 16\_09\_2011/16\_09\_2011\_9.[pp][nn][gg] ]
- convert -filter Cubic -resize 1024x1024 \*.[pP][nN][gG] 16\_09\_2011/16\_09\_2011\_9.[pp][nn][gg]  
convert: unable to open image `*.[pP][nN][gG]': /usr/lib/ImageMagick-6.6.0/modules-Q16/coders/[pp][nn][gg].la @ error/blob.c/OpenBlob/2489. convert: missing an image filename`16\_09\_2011/16\_09\_2011\_9.[pp][nn][gg]’ @ error/convert.c/ConvertImageCommand/2940.
- expr 9 + 1
- i=10
- echo Redimensionnement de : \033[1;32m \*.[tT][iI][fF][fF] \033[0;39m
- echo [tT][iI][fF][fF]
- tr [:upper:] [:lower:]
- ext=[tt][ii][ff][ff]
- out=16\_09\_2011/16\_09\_2011\_10.[tt][ii][ff][ff]
- [-f 16\_09\_2011/16\_09\_2011\_10.[tt][ii][ff][ff] ]
- convert -filter Cubic -resize 1024x1024 \*.[tT][iI][fF][fF] 16\_09\_2011/16\_09\_2011\_10.[tt][ii][ff][ff]  
convert: unable to open image `*.[tT][iI][fF][fF]': /usr/lib/ImageMagick-6.6.0/modules-Q16/coders/[tt][ii][ff][ff].la @ error/blob.c/OpenBlob/2489. convert: missing an image filename`16\_09\_2011/16\_09\_2011\_10.[tt][ii][ff][ff]’ @ error/convert.c/ConvertImageCommand/2940.
- expr 10 + 1
- i=11
- echo Redimensionnement de : \033[1;32m \*.[bBmMpP] \033[0;39m
- echo [bBmMpP]
- tr [:upper:] [:lower:]
- ext=[bbmmpp]
- out=16\_09\_2011/16\_09\_2011\_11.[bbmmpp]
- [-f 16\_09\_2011/16\_09\_2011\_11.[bbmmpp] ]
- convert -filter Cubic -resize 1024x1024 \*.[bBmMpP] 16\_09\_2011/16\_09\_2011\_11.[bbmmpp]  
convert: unable to open image `*.[bBmMpP]': /usr/lib/ImageMagick-6.6.0/modules-Q16/coders/[bbmmpp].la @ error/blob.c/OpenBlob/2489. convert: missing an image filename`16\_09\_2011/16\_09\_2011\_11.[bbmmpp]’ @ error/convert.c/ConvertImageCommand/2940.
- expr 11 + 1
- i=12  
[/code]

---

<div class="post-metadata">

**Author:** ![MisterFreez](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/bb73d2/32.png) [@MisterFreez](https://www.debian-fr.org/u/MisterFreez)\
**Post date:** [Février 21, 2016, 3:29 UTC](https://www.debian-fr.org/t/finalisation-script-bash-besoin-dun-peut-daide/33924/22 "2016-02-21T03:29:30Z")

</div>

Remplace ça :

```auto

```

par

```auto

```

---

<div class="post-metadata">

**Author:** ![chris38](https://www.debian-fr.org/user_avatar/www.debian-fr.org/chris38/32/12918_2.png) [@chris38](https://www.debian-fr.org/u/chris38)\
**Post date:** [Février 21, 2016, 3:29 UTC](https://www.debian-fr.org/t/finalisation-script-bash-besoin-dun-peut-daide/33924/23 "2016-02-21T03:29:54Z")

</div>

Sa fonctionne pas mal…merci !

Dernière petite chose, si je compte poursuivre mon script mais en étant sûr que cette première partie soit éxécuté comment je dois terminé cette première partie ?

Merci pour le CdM .

---

<div class="post-metadata">

**Author:** ![MisterFreez](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/bb73d2/32.png) [@MisterFreez](https://www.debian-fr.org/u/MisterFreez)\
**Post date:** [Février 21, 2016, 3:29 UTC](https://www.debian-fr.org/t/finalisation-script-bash-besoin-dun-peut-daide/33924/24 "2016-02-21T03:29:55Z")

</div>

Pas compris.

---

<div class="post-metadata">

**Author:** ![chris38](https://www.debian-fr.org/user_avatar/www.debian-fr.org/chris38/32/12918_2.png) [@chris38](https://www.debian-fr.org/u/chris38)\
**Post date:** [Février 21, 2016, 3:29 UTC](https://www.debian-fr.org/t/finalisation-script-bash-besoin-dun-peut-daide/33924/25 "2016-02-21T03:29:56Z")

</div>

Pour l’instant ,grace à ton aide, le script fonctionne ,toutefois je compte poussez un peut plus loin plus tard, et continuer à la suite de celui-ci, mais comment je commence la suite de tel sorte que la suite commence quand ton script se termine .

- clair ?

[Peut-être très simple, mais comme je débute totalement …] et je ne trouve pas de doc accessible aux “dummies”

---

<div class="post-metadata">

**Author:** ![MisterFreez](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/bb73d2/32.png) [@MisterFreez](https://www.debian-fr.org/u/MisterFreez)\
**Post date:** [Février 21, 2016, 3:30 UTC](https://www.debian-fr.org/t/finalisation-script-bash-besoin-dun-peut-daide/33924/26 "2016-02-21T03:30:01Z")

</div>

Ça dépend du fonctionnement que tu veut.

Veux-tu créer un second script (dans un nouveau fichier) qui s’exécuterait après ? ou continuer le script actuel ?  
Veux-tu vérifier que toutes les sont traitées ? ou simplement attendre d’avoir essayer avec toute ?

Ceci permet d’avoir une variable à la fin de la boucle ($ret) égale à 0 si tout c’est bien passé et à 1 si au moins une photo a eu un problème :

[code]i=1  
ret=0  
printf ‘%s\n’ _._|egrep -i ‘.(jpg|png|tiff|bmp)$’|while read I ; do  
echo “Redimensionnement de : $VERT $I $NORMAL"  
ext=”$(echo ${I##\*.} | tr [:upper:] [:lower:])“  
out=”$date/${date}_$i.$ext"  
while [-f “$out”]; do  
i=$((++$i))  
out="$date/${date}_$i.$ext"  
done  
convert -filter Cubic -resize $imgsize $I “$out”  
[$ret -eq 0 -a $? -ne 0] && ret=1  
i=$((++$i))  
done

exit $ret[/code]

---

<div class="post-metadata">

**Author:** ![Totor](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/t/58f4c7/32.png) [@Totor](https://www.debian-fr.org/u/Totor)\
**Post date:** [Février 21, 2016, 3:30 UTC](https://www.debian-fr.org/t/finalisation-script-bash-besoin-dun-peut-daide/33924/27 "2016-02-21T03:30:03Z")

</div>

Bonjour,

[quote=“MisterFreez”]

`
 [$ret -eq 0 -a $? -ne 0] && ret=1
`[/quote]

```auto
((ret|=$?))
```

😉

---

<div class="post-metadata">

**Author:** ![MisterFreez](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/bb73d2/32.png) [@MisterFreez](https://www.debian-fr.org/u/MisterFreez)\
**Post date:** [Février 21, 2016, 3:30 UTC](https://www.debian-fr.org/t/finalisation-script-bash-besoin-dun-peut-daide/33924/28 "2016-02-21T03:30:03Z")

</div>

Ça marche sous bash mais pas sou dash :

`$ ret=0
$ i=0
$ ((ret|=$i))
dash: ret: not found
dash: =0: not found`  
(du moins avec mes tests)

---

<div class="post-metadata">

**Author:** ![Totor](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/t/58f4c7/32.png) [@Totor](https://www.debian-fr.org/u/Totor)\
**Post date:** [Février 21, 2016, 3:30 UTC](https://www.debian-fr.org/t/finalisation-script-bash-besoin-dun-peut-daide/33924/29 "2016-02-21T03:30:04Z")

</div>

j’avais testé avec /bin/sh  
et en regardant le man de sh, je me rends compte qu’il s’agit de ksh ☹

et je n’ai pas dash…  
une autre syntaxe :

`ret=0
i=0
let 'ret=ret|i'`

en gros, l’idée est de faire un “OU” binaire …

edit : après consultation de ce [man](http://linux.die.net/man/1/dash) (en espérant qu’il soit complet), il semble que ce ne soit pas possible …

les expressions arithmétiques y sont très peu décrites …

---

<div class="post-metadata">

**Author:** ![MisterFreez](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/bb73d2/32.png) [@MisterFreez](https://www.debian-fr.org/u/MisterFreez)\
**Post date:** [Février 21, 2016, 3:30 UTC](https://www.debian-fr.org/t/finalisation-script-bash-besoin-dun-peut-daide/33924/30 "2016-02-21T03:30:04Z")

</div>

Si c’est pour remplacer la condition par l’expression booléenne il y a toujours expr :

```auto

```

Sinon il est possible de renommer ret en nb\_fail et de remplacer ça :

```auto

```

par

```auto

```

Du coup à la fin nb\_fail indique le nombre de fichiers en erreur.

---

<div class="post-metadata">

**Author:** ![chris38](https://www.debian-fr.org/user_avatar/www.debian-fr.org/chris38/32/12918_2.png) [@chris38](https://www.debian-fr.org/u/chris38)\
**Post date:** [Février 21, 2016, 3:30 UTC](https://www.debian-fr.org/t/finalisation-script-bash-besoin-dun-peut-daide/33924/31 "2016-02-21T03:30:08Z")

</div>

> [@MisterFreez](#):
>
> Ça marche sous bash mais pas sou dash…

Y’aurrai beaucoup de modif sue le script pour le passer en bash ?

---

<div class="post-metadata">

**Author:** ![MisterFreez](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/bb73d2/32.png) [@MisterFreez](https://www.debian-fr.org/u/MisterFreez)\
**Post date:** [Février 21, 2016, 3:30 UTC](https://www.debian-fr.org/t/finalisation-script-bash-besoin-dun-peut-daide/33924/32 "2016-02-21T03:30:10Z")

</div>

Remplacer le shebang par :

```auto

```

Ensuite pour utiliser tout les bonus de bash (qui sont optionnels) ça demande un peu plus de travail. Voici une version non-testée qui devrait être mieux :

[code]#!/bin/bash  
REPERTOIRE\_SOURCE="/data/Photos\_reduites"  
rep\_absent="!!!..Attention, Le repertoire source n’éxiste pas …!!!“  
rep\_vide=“Votre repertoire est vide, ajoutez vos fichiers et renouveler l’opération.“  
DATE=`date +%d%m%y`  
VERT=”\033[1;32m"  
NORMAL=”\033[0;39m"  
ROUGE=”\033[1;31m"  
ROSE="\033[1;35m"  
BLEU="\033[1;34m"  
BLANC="\033[0;02m"  
BLANCLAIR="\033[1;08m"  
JAUNE="\033[1;33m"  
CYAN="\033[1;36m"  
echo “Teste de la présence du répertoire ou sont stocké les photos à réduire"  
echo “Veuillez patienter quelques instant"  
sleep 2  
if [! -e “$REPERTOIRE\_SOURCE”]  
then  
echo “$ROUGE””$rep\_absent” “$NORMAL"  
sleep 2  
echo “Veuillez créer le repertoire suivant : “$VERT””$REPERTOIRE\_SOURCE”" “$NORMAL"  
echo “Fermeture du programme"  
sleep 2  
exit  
fi  
echo -n “$BLEU”“Nombre de fichiers à traiter” :  
var=$(ls -a “$REPERTOIRE\_SOURCE” | grep -cv ‘.$’)  
echo “$VERT””$var"  
sleep 2  
if [$var -eq 0]  
then  
echo “$ROUGE””$rep\_vide""$NORMAL"  
echo "Fermeture du programme"  
sleep 5  
exit  
fi  
###################################  
title="Choisissez la résolution d’image souhaité’“  
imgsize=`zenity --title "$title" --list --separator=" " --column="size" "160x120" "320x240" "640x480" "800x600" "1024x768"`  
if [“$?” != 0] ; then  
exit  
fi  
#user have to select target size  
#imgsize=`echo $imgsize | sed 's/ max//g'`  
imgsize=${imgsize/ max/}  
if [! “$imgsize”]; then  
zenity --error --title=“error” --text=“select a target size"  
exit  
fi  
#To respect proportions  
himgsize=$imgsize  
#val1=`echo "$imgsize" | awk -F'x' '{ print $1 }'`  
val1=”${imgsize##x\*}“  
imgsize=”${val1}x${val1}”  
###################################

echo “$JAUNE”“Les photos du répertoire courant : “$VERT” “$REPERTOIRE\_SOURCE” “$NORMAL”, vont être redimenssionnées aux valeurs suivantes :”$VERT" “$imgsize”""$NORMAL"  
sleep 2  
cd “$REPERTOIRE\_SOURCE"  
date=”$(date +%d\_%m\_%Y)"  
mkdir -p "$date"  
indice=$(printf ‘%s\n’ $_date/$date\*|awk -F[_.] ’ $6 \> num { num=$6 } END { print num+1 } ')  
printf ‘%s\n’ _._|egrep -i ‘.(jpg|png|tiff|bmp)$’|while read I ; do  
echo “Redimensionnement de : $VERT $I $NORMAL"  
ext=”${I##\*.}“  
ext=”${ext, ,}“  
out=”$date/${date}\_$indice.$ext"  
convert -filter Cubic -resize $imgsize $I “$out”  
((indice++))  
done[/code]

---

<div class="post-metadata">

**Author:** ![chris38](https://www.debian-fr.org/user_avatar/www.debian-fr.org/chris38/32/12918_2.png) [@chris38](https://www.debian-fr.org/u/chris38)\
**Post date:** [Février 21, 2016, 3:30 UTC](https://www.debian-fr.org/t/finalisation-script-bash-besoin-dun-peut-daide/33924/33 "2016-02-21T03:30:18Z")

</div>

Je viens d’essayer sans aller plus loin…

[code]Les photos du répertoire courant : /data/Photos\_reduites , vont être redimenssionnées aux valeurs suivantes : 800x600x800x600

- sleep 2
- cd /data/Photos\_reduites
- date +%d\_%m\_%Y
- date=20\_09\_2011
- mkdir -p 20\_09\_2011
- printf %s\n /bin /boot /data /dev /etc /home /initrd.img /lib /lost+found /media /mnt /opt /proc /root /sbin /selinux /srv /sys /tmp /usr /var /virtual\_HDD /vmlinuz
- awk -F[\_.] $6 \> num { num=$6 } END { print num+1 }
- indice=1
- read I
- printf %s\n SL010492.JPG SL010493.JPG SL010495.JPG SL010497.JPG red\_img\_bash-1.sh
- egrep -i .(jpg|png|tiff|bmp)$
- echo Redimensionnement de : \033[1;32m SL010492.JPG \033[0;39m  
Redimensionnement de : SL010492.JPG
- ext=JPG  
red\_img\_bash-1.sh: 1: Bad substitution

[/code]

---

<div class="post-metadata">

**Author:** ![valrik](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/v/db5fbb/32.png) [@valrik](https://www.debian-fr.org/u/valrik)\
**Post date:** [Février 21, 2016, 3:30 UTC](https://www.debian-fr.org/t/finalisation-script-bash-besoin-dun-peut-daide/33924/34 "2016-02-21T03:30:20Z")

</div>

Bonjours à tous,  
Voilà le fruit de ma réflexion. C’est un peu tardif, mais je n’ai pu y travailler qu’en pointillés.  
`
	 :-) $ find ./ -type f
	 ./essai3.ess
	 ./essai4.ESS
	 ./ESSAI2.ess
	 ./ESSAI1.ESS
	 ./sous_rep/essai8.ESS
	 ./sous_rep/ESSAI5.ESS
	 ./sous_rep/ESSAI6.ess
	 ./sous_rep/essai7.ess
	 ./essai1.2.ess
	 ./essai1.1.ESS
	  :-) $ find ./ -type f -printf "%P\n" | awk -v date=$(date +%y%m%d) -F. '{cible="" ; if(NF > 1){for(i=1 ; i < NF ; i++) cible= cible $i "." ; cible= cible date "_" FNR "." tolower($NF) ; system("mv "$0 " "cible)}}'
	   :-) $ find ./ -type f
	   ./essai1.1.110920_10.ess
	   ./essai1.2.110920_9.ess
	   ./sous_rep/essai7.110920_8.ess
	   ./sous_rep/ESSAI5.110920_6.ess
	   ./sous_rep/essai8.110920_5.ess
	   ./sous_rep/ESSAI6.110920_7.ess
	   ./essai3.110920_1.ess
	   ./ESSAI1.110920_4.ess
	   ./ESSAI2.110920_3.ess
	   ./essai4.110920_2.ess
	    :-) $ 
	    `  
le cahier des charges tient sur une ligne de commande… un peu longue certes, mais avec un alias… 😉  
Explication dans l’ordre :  
[ul]  
-printf “%P\n” de la commande find : permet d’éliminer le “./” en début de ligne,  
–v date=$(date +%y%m%d) : variable interne à awk initialisée avec la date courante,  
–F. : le séparateur de champs,  
-cible="" ; à chaque ligne, on réinitialise la variable,  
if(NF \> 1) : si le nombre de champs n’est pas supérieur à 1, le traitement n’a pas de sens,  
-for(i=1 ; i \< NF ; i++) cible= cible $i “.” ; : on reconstitue, hormis l’extension, le mon complet (chemin + nom) du fichier,  
-cible= cible date “\_” FNR “.” tolower($NF) ; on concatène avec les ajouts souhaités. FNR est le numéro de ligne courante. Celui-ci est recyclé en indice,  
-system("mv "$0 " "cible) : la commande shell.  
[/ul]  
Si l’on veut autre chose qu’un point entre le dernier champs du nom et le début des ajouts, il faudra tester sa présence. Ainsi, on pourra lui attribuer un autre caractère (un tiret bas, par exemple).  
Si la date n’est pas cruciale, on peut initialiser la variable en début de ligne. Cela évite une recalcul à chaque ligne traitée.

---

<div class="post-metadata">

**Author:** ![Totor](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/t/58f4c7/32.png) [@Totor](https://www.debian-fr.org/u/Totor)\
**Post date:** [Février 21, 2016, 3:30 UTC](https://www.debian-fr.org/t/finalisation-script-bash-besoin-dun-peut-daide/33924/35 "2016-02-21T03:30:23Z")

</div>

Bonjour,

Je constate une erreur qui est de mon fait :

[quote=“MisterFreez”]

`
[...]
date="$(date +%d_%m_%Y)"
mkdir -p "$date"
indice=$(printf '%s\n' $_date/$_date_*|awk -F[_\.] ' $6 > num { num=$6 } END { print num+1 } ')
[...]
`[/quote]

–\>

```auto

```

Pour le problème de substitution, je pense que cela provient de ext="${ext, ,}" car tu ne dois pas avoir une version de bash \>= 4.  
(au passage, ce devrait être ext="${ext,}")

@valrik : il faudrait s’assurer que sa version de find “embarque” l’action printf.

A titre d’info, je pense que ceci simplifie la chose :

```auto
awk -v date=$(date +%y%m%d) -F. -v OFS=. ' NF > 1 {old=$0; $(NF+1)=tolower($NF); $NF=date "_" FNR; system("mv "old " "$0)}'
```

---

<div class="post-metadata">

**Author:** ![valrik](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/v/db5fbb/32.png) [@valrik](https://www.debian-fr.org/u/valrik)\
**Post date:** [Février 21, 2016, 3:30 UTC](https://www.debian-fr.org/t/finalisation-script-bash-besoin-dun-peut-daide/33924/36 "2016-02-21T03:30:25Z")

</div>

Salut Totor,  
voilà le résultat de ta commande :

```
[code]
 :-) $ find ./ -type f
 ./essai3.ess
 ./essai4.ESS
 ./ESSAI2.ess
 ./ESSAI1.ESS
 ./sous_rep/essai8.ESS
 ./sous_rep/ESSAI5.ESS
 ./sous_rep/ESSAI6.ess
 ./sous_rep/essai7.ess
 ./essai1.2.ess
 ./essai1.1.ESS
  :-) $ find ./ -type f -printf "%P\n" | awk -v date=$(date +%y%m%d) -F. -v OFS=. ' NF > 1 {old=$0; $(NF+1)=tolower($NF); $NF=date "_" FNR; system("mv "old " "$0)}'
   :-) $ find ./ -type f
   ./ESSAI1.ESS.110920_4
   ./sous_rep/ESSAI6.ess.110920_7
   ./sous_rep/ESSAI5.ESS.110920_6
   ./sous_rep/essai8.ESS.110920_5
   ./sous_rep/essai7.ess.110920_8
   ./ESSAI2.ess.110920_3
   ./essai1.2.ess.110920_9
   ./essai4.ESS.110920_2
   ./essai3.ess.110920_1
   ./essai1.1.ESS.110920_10
    :-) $ 
    [/code]

```

j’ai l’impression qu’il y a un ch’tit souci… peut-être en inversant $(NF+1)=tolower($NF); et $NF=date “\_” FNR; ?

---

<div class="post-metadata">

**Author:** ![Totor](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/t/58f4c7/32.png) [@Totor](https://www.debian-fr.org/u/Totor)\
**Post date:** [Février 21, 2016, 3:30 UTC](https://www.debian-fr.org/t/finalisation-script-bash-besoin-dun-peut-daide/33924/37 "2016-02-21T03:30:25Z")

</div>

😮  
En effet, ce n’est pas le comportement que j’avais avec la version de awk sous AIX ![:018](https://www.debian-fr.org/uploads/default/original/1X/35d75f143a06bf2f0d0242498020dfb195b53630.gif "non")

Au vu de ce qu’il se passe, je dirais qu’il faut rajouter un NF++ juste avant l’instruction system  
et si ça ne fonctionne pas, je tenterai ainsi :

`awk -v date=$(date +%y%m%d) -F. -v OFS=. ' NF > 1 {old=$0; NF++; $NF=tolower($(NF-1)); $(NF-1)=date "_" FNR; system("mv "old " "$0)}'
`

---

<div class="post-metadata">

**Author:** ![chris38](https://www.debian-fr.org/user_avatar/www.debian-fr.org/chris38/32/12918_2.png) [@chris38](https://www.debian-fr.org/u/chris38)\
**Post date:** [Février 21, 2016, 3:30 UTC](https://www.debian-fr.org/t/finalisation-script-bash-besoin-dun-peut-daide/33924/38 "2016-02-21T03:30:25Z")

</div>

[quote=“Totor”]…

Pour le problème de substitution, je pense que cela provient de ext="${ext, ,}" car tu ne dois pas avoir une version de bash \>= 4.  
…[/quote]

Si si `chris@lagache:~$ policy bash
bash:
  Installé : 4.1-3
  Candidat : 4.1-3
 Table de version :
     4.2-1~exp1 0
         10 http://ftp.fr.debian.org/debian/ experimental/main i386 Packages
 *** 4.1-3 0
        990 http://ftp.fr.debian.org/debian/ squeeze/main i386 Packages
         90 http://ftp.fr.debian.org/debian/ wheezy/main i386 Packages
         50 http://ftp.fr.debian.org/debian/ sid/main i386 Packages
        100 /var/lib/dpkg/status
`

---

<div class="post-metadata">

**Author:** ![Totor](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/t/58f4c7/32.png) [@Totor](https://www.debian-fr.org/u/Totor)\
**Post date:** [Février 21, 2016, 3:30 UTC](https://www.debian-fr.org/t/finalisation-script-bash-besoin-dun-peut-daide/33924/39 "2016-02-21T03:30:27Z")

</div>

![:119](https://www.debian-fr.org/uploads/default/original/1X/0287f377b0e103e172422ffbbe8c639fd3e12c9e.gif "vertige") étrange … ![:017](https://www.debian-fr.org/uploads/default/original/1X/7bbea83f89515ab7c7a738dddb86c4d4f140bd13.gif "reflechit")

ceci man bash|less +/, devrait t’afficher le paragraphe du manuel concernant cette syntaxe. Si ce n’est pas le cas, j’y comprends rien ![:think:](https://www.debian-fr.org/uploads/default/original/1X/98cae0704aea0201d04f151843e80a3ecd391eca.gif "Think")

essaie avec la correction que j’ai donné, à savoir ext=«&nbsp;${ext,}&nbsp;» mais je n’y crois pas car la syntaxe donnée par MisterFreez est tout de même valide. 😐

---

<div class="post-metadata">

**Author:** ![chris38](https://www.debian-fr.org/user_avatar/www.debian-fr.org/chris38/32/12918_2.png) [@chris38](https://www.debian-fr.org/u/chris38)\
**Post date:** [Février 21, 2016, 3:30 UTC](https://www.debian-fr.org/t/finalisation-script-bash-besoin-dun-peut-daide/33924/40 "2016-02-21T03:30:30Z")

</div>

[quote=«&nbsp;Totor&nbsp;»]:119 étrange … ![:017](https://www.debian-fr.org/uploads/default/original/1X/7bbea83f89515ab7c7a738dddb86c4d4f140bd13.gif "reflechit")  
ceci man bash|less +/, devrait t’afficher le paragraphe du manuel concernant cette syntaxe. Si ce n’est pas le cas, j’y comprends rien ![:think:](https://www.debian-fr.org/uploads/default/original/1X/98cae0704aea0201d04f151843e80a3ecd391eca.gif "Think")

essaie avec la correction que j’ai donné, à savoir ext=«&nbsp;${ext,}&nbsp;» mais je n’y crois pas car la syntaxe donnée par MisterFreez est tout de même valide. 😐[/quote]

pour le man, c’est bon… sinon même erreur !!!

[Page précédente](https://www.debian-fr.org/t/finalisation-script-bash-besoin-dun-peut-daide/33924.md?page=1)

[Page suivante](https://www.debian-fr.org/t/finalisation-script-bash-besoin-dun-peut-daide/33924.md?page=3)
