Se você estiver usando bash
, poderá definir a opção nullglob
:
nullglob
If set, bash allows patterns which match no files (see
Pathname Expansion above) to expand to a null string,
rather than themselves.
Para ilustrar:
$ ls
test1.dummy test1.jpeg test1.jpg test1.test
$ shopt nullglob
nullglob off
$ for file in *.{jpg,jpeg,test,avi}; do
echo "$file size is $(stat -c '%s' "$file")";
done
test1.jpg size is 0
test1.jpeg size is 0
test1.test size is 0
stat: cannot stat ‘*.avi’: No such file or directory
*.avi size is
E se ativarmos nullglob
:
$ shopt -s nullglob
$ shopt nullglob ## just to demonstrate that it is on
nullglob on
$ for file in *.{jpg,jpeg,test,avi}; do
echo "$file size is $(stat -c '%s' "$file")"
done
test1.jpg size is 0
test1.jpeg size is 0
test1.test size is 0
Como alternativa, você pode ter certeza de que o arquivo existe (também estou usando este exemplo para demonstrar que a expansão de chave não é necessária aqui):
$ for file in *jpg *jpeg *test *avi; do
[ -e "$file" ] && echo "$file size is $(stat -c '%s' "$file")"
done
test1.jpg size is 0
test1.jpeg size is 0
test1.test size is 0