这个很好运作
if [[ -e img.png ]]
then
echo "exist"
else
echo "doesn't exist"
fi
但是,如果我知道可能有一个名为“img”的图像文件,但我不知道文件是 .jpg、.gif、.jpeg、.tff 等格式,怎么办呢?
我并不关心文件扩展名,只想知道是否存在名为“img”的文件。
我该如何做呢?
files=`ls img.* 2>/dev/null`
if [ "$files" -a ${#files[@]} ]; then
echo "exist"
else
echo "doesn't exist"
fi
ls img.*
列出当前工作目录中名称与模式img.*
匹配的所有文件。
结果存储在名为files
的数组中。
然后检查数组大小以确定所需的文件是否存在。您可以执行以下操作:
files=$(ls img.* 2> /dev/null | wc -l)
if [ "$files" != "0" ]
then
echo "exist"
else
echo "doesn't exist"
fi
类似这样的代码应该可以完成任务:
if [[ $(ls img.*) ]]; then
echo "file exist";
else
echo "file does not exist";
fi
我建议查看bash的模式匹配: http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_04_03.html
不使用任何外部命令:
$ for i in img.*
> do
> [ -f $i ] && echo exist || echo not exist
> break
> done
shopt -s nullglob
files=( img.* )
if (( ${#files[@]} == 0 )); then
echo "there are no 'img' files"
fi
如果您不使用nullglob
,那么如果没有这样的文件,数组将有1个元素,即字面字符串"img.*"。