GNT sans publicité, site mobile, fonctionnalitées exclusives...

boucle avec expression complexe

Le
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
Lire les 12 réponses

Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 3
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Christian CAMIER
Le #526150
Nicolas Pontoizeau wrote:
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.

Normal, entre doubles quotes, le dolar ($) est interprété. Tentes :

FILTRE='(jpg$|avi$)' # ici des simples quotes
Ca devrait aller un peut mieux

Ce qui donne :
#!/bin/zsh
FILTRE='(jpg$|avi$)'
for i in `ls -Ai | grep -iE '$FILTRE' | awk 'BEGIN {FS=" "} {print $1}'`
do
...
done

Pascal Bourguignon
Le #526149
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}'`
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


--
__Pascal Bourguignon__ http://www.informatimago.com/
The world will now reboot; don't bother saving your artefacts.

Pascal Bourguignon
Le #526148
Christian CAMIER
Normal, entre doubles quotes, le dolar ($) est interprété. Tentes :
FILTRE='(jpg$|avi$)' # ici des simples quotes
Ca devrait aller un peut mieux

Ce qui donne :
#!/bin/zsh
FILTRE='(jpg$|avi$)'
for i in `ls -Ai | grep -iE '$FILTRE' | awk 'BEGIN {FS=" "} {print $1}'`
do


Faudra mélanger nos deux réponses...

--
__Pascal Bourguignon__ http://www.informatimago.com/
The world will now reboot; don't bother saving your artefacts.

Nicolas Pontoizeau
Le #526147
Nicolas Pontoizeau
#!/bin/zsh
FILTRE="(jpg$|avi$)"
for i in `ls -Ai | grep -iE '$FILTRE' awk 'BEGIN {FS=" "} {print $1}'`


for i in `ls -Ai | grep -iE "$FILTRE"|awk 'BEGIN {FS=" "} {print $1}'`


ENORME MERCI!

J'ai du mal à maitriser les simples quotes des doubles quote. Pourquoi
faut il transformer les simples en double quotes dans ce cas?

--
Nicolas Pontoizeau - Promo 2005


Christian CAMIER
Le #526146
Pascal Bourguignon wrote:
Christian CAMIER
Normal, entre doubles quotes, le dolar ($) est interprété. Tentes :
FILTRE='(jpg$|avi$)' # ici des simples quotes
Ca devrait aller un peut mieux

Ce qui donne :
#!/bin/zsh
FILTRE='(jpg$|avi$)'
for i in `ls -Ai | grep -iE '$FILTRE' | awk 'BEGIN {FS=" "} {print $1}'`
do



Faudra mélanger nos deux réponses...

Oups, n'avais pas vu le simple quote dans le GREP ;(



Publicité
Suivre les réponses
Poster une réponse
Anonyme