Em bash
, você pode definir a opção nullglob
para que um padrão que não corresponda a nada "desapareça", em vez de ser tratado como uma string literal:
shopt -s nullglob
for fname in *.zip ; do
echo "current file is ${fname}"
done
No script shell POSIX, você apenas verifica que fname
existe (e ao mesmo tempo com [ -f ]
, verifique se é um arquivo regular (ou um link simbólico para um arquivo regular) e não outros tipos como diretório / fifo / device ...):
for fname in *.zip; do
[ -f "$fname" ] || continue
printf '%s\n' "current file is $fname"
done
Substitua [ -f "$fname" ]
por [ -e "$fname" ] || [ -L "$fname ]
se você quiser fazer o loop de todos os arquivos (não ocultos) cujo nome termina em .zip
, independentemente do tipo.
Substitua *.zip
por .*.zip .zip *.zip
se você também quiser considerar arquivos ocultos cujo nome termine em .zip
.