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
|