PHWinfo banniere

Titres
PORTAIL ANNUAIRE ARTICLES COMPARATEUR HÉBERGEURS DEVIS FORUMS RÉDUCTEUR D'URL
Précédent   PHWinfo > Forums Hébergement > Forum Serveur - Sécurité et techniques > fr.comp.os.unix > Boucle for avec ls
S'inscrire FAQ Membres Recherche Messages du jour Marquer les forums comme lus
fr.comp.os.unix Système UNIX.

Boucle for avec ls

Réponse
 
LinkBack Outils de la discussion
Vieux 28/02/2006, 10h57   #1
ozzii
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Boucle for avec ls

Bonjour,

j'ai ceci:
for FIC in `ls /temp/toto*|grep -v old 2>>/dev/null`
do
echo "$FIC"
done

même avec la redirection de l'erreur, j'ai quand même l'erreur
suivant :
ls : 0653-341 Le fichier /temp/toto* n'existe pas.

Comment faire pour ne pas avoir de message d'erreur ?

  Réponse avec citation
Vieux 28/02/2006, 11h54   #2
Stephane Chazelas
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Boucle for avec ls

On 28 Feb 2006 02:57:06 -0800, ozzii wrote:
> Bonjour,
>
> j'ai ceci:
> for FIC in `ls /temp/toto*|grep -v old 2>>/dev/null`
> do
> echo "$FIC"
> done
>
> même avec la redirection de l'erreur, j'ai quand même l'erreur
> suivant :
> ls : 0653-341 Le fichier /temp/toto* n'existe pas.
>
> Comment faire pour ne pas avoir de message d'erreur ?
>


set -f # on veut que le shell expande /temp/toto*, mais pas
# qu'il expande chaque mot resultat du splitting de `...`
IFS='
' # le splitting de `...` doit etre fait sur les sauts de ligne

for FIC in `set +f; ls -d /temp/toto* 2> /dev/null |grep -v old`
do
printf '%s\n' "$FIC"
done

(tu redirigeais la sortie d'erreur de grep, pas celle de ls).


Mais pourquoi pas:

for FIC in /tmp/toto*; do
case $FIC in
*old*) continue;;
esac
printf '%s\n' "$FIC"
done


Avec zsh:

print -rl /tmp/toto*~*old*

(il faut peut-etre l'option extendedglob).

--
Stephane
  Réponse avec citation
Vieux 28/02/2006, 11h59   #3
Nicolas George
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Boucle for avec ls

Stephane Chazelas wrote in message
<slrne08efj.nsr.stephane_chazelas@duey.spider.com> :
> Avec zsh:
>
> print -rl /tmp/toto*~*old*


/tmp/toto*~*old*(N) pour ne pas avoir d'erreur quand aucun fichier n'est
trouvé.

> (il faut peut-etre l'option extendedglob).


Oui, pour l'opérateur ~.
  Réponse avec citation
Vieux 28/02/2006, 14h59   #4
Stephane Chazelas
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Boucle for avec ls

On Tue, 28 Feb 2006 11:59:16 +0000 (UTC), Nicolas George wrote:
> Stephane Chazelas wrote in message
> <slrne08efj.nsr.stephane_chazelas@duey.spider.com> :
>> Avec zsh:
>>
>> print -rl /tmp/toto*~*old*

>
> /tmp/toto*~*old*(N) pour ne pas avoir d'erreur quand aucun fichier n'est
> trouvé.


Ben, je prefere avoir une erreur qu'une ligne vide, c'est plus
parlant.

OK pour:

for f in /tmp/toto*~*old*(N); do

ou

files=(/tmp/toto*~*old*(N))

par contre.

>> (il faut peut-etre l'option extendedglob).

>
> Oui, pour l'opérateur ~.



--
Stephane
  Réponse avec citation
Vieux 28/02/2006, 22h53   #5
Etienne de Tocqueville
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Boucle for avec ls

"ozzii" <ozzii23@gmail.com> a écrit sur fr.comp.os.unix :

> Bonjour,
>
> j'ai ceci:
> for FIC in `ls /temp/toto*|grep -v old 2>>/dev/null`
> do
> echo "$FIC"
> done
>
> même avec la redirection de l'erreur, j'ai quand même l'erreur
> suivant :
> ls : 0653-341 Le fichier /temp/toto* n'existe pas.
>
> Comment faire pour ne pas avoir de message d'erreur ?


C'est pas le grep qui fait l'erreur, mais le ls. De plus, le ">>" n'a
pas d'avantage par rapport au ">" quand c'est pour rediriger vers
/dev/null, donc :

for FIC in `ls /temp/toto* 2>/dev/null |grep -v old`
do
echo "$FIC"
done
  Réponse avec citation
Vieux 01/03/2006, 09h05   #6
Stephane Dupille
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Boucle for avec ls

Etienne de Tocqueville <edt-news-11-2005@galacsys.com> écrit :
>> Comment faire pour ne pas avoir de message d'erreur ?

> C'est pas le grep qui fait l'erreur, mais le ls.


Non, ce n'est pas ls qui fait l'erreur, c'est le shell qui fait
l'expansion des *.

> De plus, le ">>" n'a
> pas d'avantage par rapport au ">" quand c'est pour rediriger vers
> /dev/null,


Oui.

> donc :
> for FIC in `ls /temp/toto* 2>/dev/null |grep -v old`
> do
> echo "$FIC"
> done


Non :
[gimli] ~> ls /temp/toto* 2>/dev/null
zsh: no matches found: /temp/toto*

--
DM> J'arrive seulement sur ce groupe de discussion .Que faut il faire ?
Rien, il n'y a absolument rien d'autres à faire que taper son message en
répondant au groupe, ou pourquoi pas un nouveau message. Rien d'autres
-+- E in Guide du Neuneu Usenet - Mais où ce qu'il est-il donc ? -+-
  Réponse avec citation
Vieux 01/03/2006, 22h02   #7
Etienne de Tocqueville
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Boucle for avec ls

Stephane Dupille <sdupille@NOSPAM.fr.eu.org> a écrit sur fr.comp.os.unix :

> Non :
> [gimli] ~> ls /temp/toto* 2>/dev/null
> zsh: no matches found: /temp/toto*


Chez moi ça marche !

Cela dit, j'utilise des shell normaux, style "sh" et compatibles ! ;-)
  Réponse avec citation
Vieux 02/03/2006, 06h20   #8
ozzii
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Boucle for avec ls

Désolé pour le délai.
Je test tout à l'heure et je vous dis.
P.S. Je suis sous AIX et Solaris.

  Réponse avec citation
Réponse


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui


Fuseau horaire GMT +1. Il est actuellement 22h13.


Édité par : vBulletin® version 3.7.2
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0 RC5 Tous droits réservés.
Version française #16 par l'association vBulletin francophone
PHWinfo est un site Éducation Sans Frontières
Ad Management by RedTyger
©Tous droits réservés par les parties respectives
Page generated in 0,11304 seconds with 16 queries