Discussion: Boucle for avec ls
Afficher un message
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
 
Page generated in 0,04508 seconds with 9 queries