OVH Cloud OVH Cloud

boucle avec expression complexe

12 réponses
Avatar
Nicolas Pontoizeau
Salut,

J'ai eu besoin de me faire un petit script qui récupère les inodes des
fichiers dont le noms se finit par jpg ou avi (pour renommer les fichier
de mon appareil photo)

Ceci marche bien :
#!/bin/zsh
for i in `ls -Ai | grep -iE '(jpg$|avi$)' | awk 'BEGIN {FS=" "} {print $1}'`
do
[plein de chose]
done

Pour plus de fun je ne voulais pas le limiter aux fichiers jpg et avi
mais aussi mov png... J'ai pensé à quelque chose du style :
#!/bin/zsh
FILTRE="(jpg$|avi$)"
for i in `ls -Ai | grep -iE '$FILTRE' awk 'BEGIN {FS=" "} {print $1}'`
do
[plein de chose]
done

Mais rien à faire... J'ai essayé un peu au pif dans tous les sens en
enlevant des guillemets... J'y arrive pas :(

Je remercie le gourou qui m'aidera à y voir plus clair.

--
Nicolas Pontoizeau - Promo 2005

2 réponses

1 2
Avatar
Nicolas Pontoizeau
2004-12-11, 14:46(+00), Nicolas Pontoizeau:
Salut,

J'ai eu besoin de me faire un petit script qui récupère les inodes des
fichiers dont le noms se finit par jpg ou avi (pour renommer les fichier
de mon appareil photo)

Ceci marche bien :
#!/bin/zsh
for i in `ls -Ai | grep -iE '(jpg$|avi$)' | awk 'BEGIN {FS=" "} {print $1}'`
do
[plein de chose]
done


zmodload zsh/stat
setopt extendedglob

extensions='avi|jpg'

for i in *.(#i)($~extensions)(ND); do
stat -L -H st -- $i
print -r "l'inode de $i est $st[inode]"
done


Impressionnnant! J'ai plus qu'à décoder maintenant :)

Pas une bonne idee de post-processer l'output de ls.


J'ose même pas montrer la suite de mon script alors...
Pour apprendre le shell j'utilise l'advanced bash scripting guide.
Est-ce qu'il existe autre chose de mieux?

--
Nicolas Pontoizeau - Promo 2005


Avatar
Stephane Chazelas
2004-12-12, 05:39(+00), Nicolas Pontoizeau:
[...]
Pour apprendre le shell j'utilise l'advanced bash scripting guide.
Est-ce qu'il existe autre chose de mieux?


Pour apprendre zsh, j'utiliserais un manuel de zsh plutot
(http://zsh.sunsite.dk/Guide/)

Sinon, l'ABS est pas mal mais couvre surtout Linux et oublie
souvent de mettre l'accent sur des trucs de base (comme le fait
qu'il faut toujours quoter les variables (ce qui ne s'applique
pas (toujours) a zsh)).

Mais l'un comme l'autre seront un bon moyen d'apprendre des
trucs non-portables sans savoir qu'ils sont non-portable.
Commencer par un bouquin sur Unix serait pas forcement plus mal.

--
Stephane

1 2