检查bash中是否至少存在一个文件

时间:2012-10-26 10:08:13

标签: bash shell scripting

我有这个

if [[ -e file.jpg ]] ;then echo "aaaaaaaaa"; fi

并打印“aaaaaaa”

但如果还有file.png或file.png

我想要打印

所以我需要这样的东西

if [[ -e file.* ]] ;then echo "aaaaaaaaa"; fi

但它不起作用我在语法

中遗漏了一些东西

由于

2 个答案:

答案 0 :(得分:5)

如果启用bash的nullglob设置,如果没有这样的文件,模式文件。*将扩展为空字符串:

shopt -s nullglob
files=(file.*)
# now check the size of the array
if (( ${#files[@]} == 0 )); then
    echo "no such files"
else
    echo "at least one:"
    printf "aaaaaaaaa %s\n" "${files[@]}"
fi

如果你没有启用nullglob,那么files=(file.*)将产生一个包含一个元素的数组,字符串为“file。*”

答案 1 :(得分:2)

为什么不使用循环?

for i in file.*; do
   if [[ -e $i ]]; then
      # exists...
   fi
done