Bash脚本 - 检查文件是否存在

时间:2014-04-04 09:06:08

标签: bash file if-statement conditional-statements

我需要检查具有特定扩展名的文件是否存在以及是否为空。 问题是我不知道文件的名称,只是扩展名和路径。

这是我的解决方案,名称为

FILE="/Users/test/my.out"
if [[ -f $FILE  &&  -s $FILE ]] ; then echo "EXIST"; fi

使用

FILE="/Users/test/*.out"

不要工作

4 个答案:

答案 0 :(得分:4)

我建议您使用数组,以防有多个文件:

arr=( /Users/test/*.out )

if (( ${#arr[@]} > 0 )) && [[ -s "${arr[0]}" ]]
then
    ...
fi

答案 1 :(得分:1)

您可以使用@ dogbane的解决方案使用数组或使用循环:

dir=/users/test
for file in "${dir}"/*.out; do
    break
done

if [ -f "${file}" ] && [ -s "${file}" ]; then
    echo "found a regular, non-empty .out file: ${file}"
fi

答案 2 :(得分:-1)

我认为应该这样做:

if [ -f ${var} ]; then
   if [ -s ${var} ]; then
      echo  "Found $var"
   fi
fi

答案 3 :(得分:-2)

尝试

FILE=$(ls "Downloads/*.zip" 2>/dev/null)

仅在只有一个文件的情况下才有效。