我需要检查具有特定扩展名的文件是否存在以及是否为空。 问题是我不知道文件的名称,只是扩展名和路径。
这是我的解决方案,名称为
FILE="/Users/test/my.out"
if [[ -f $FILE && -s $FILE ]] ; then echo "EXIST"; fi
使用
FILE="/Users/test/*.out"
不要工作
答案 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)
仅在只有一个文件的情况下才有效。