Ce que je recherche, c’est quelque chose comme:
if [ -f "filenam*" ]; then ... fi
Mais le caractère générique (*) pose problème.
J’ai aussi essayé:
if [ `ls filenam* > /dev/null 2>&1` ]; then ... fi
Ce qui peut fonctionner dans d’autres shells mais ne semble pas fonctionner dans le shell Bourne (sh).
Merci pour toute aide!
EDIT: Désolé, pas le shell C, Bourne shell (sh).
Plutôt que d’utiliser test -n $(ls filenam*)
, vous préférerez peut-être:
if ls filenam* 2> /dev/null | grep . > /dev/null; then ... fi
Puisque ceci est basé sur C, vous avez probablement besoin de la commande glob:
ls `glob filenam*`
Vous étiez sur la bonne voie. Essaye ça:
if [ ! -z `ls filenam*` ] ; then ... fi
Cela vérifiera si ls renvoie quelque chose.
J’aime ça:
function first() { echo "$1" ; } [ -e $(first filenam*) ] && echo "yes" || echo "no"
Comme csh, qu’en est-il de:
foreach i (`ls -d filenam*`) ... end