测试文件存在,退出状态来自gnu-find

时间:2012-06-28 09:17:17

标签: bash find file-exists

test -e file不够灵活时,我倾向于使用以下Bash成语来检查文件是否存在:

if [ -n "$(find ${FIND_ARGS} -print -quit)" ] ; then
   echo "pass"
else
   echo "fail"
fi

但由于我只对布尔值感兴趣,是否有任何${FIND_ARGS}可让我这样做:

if find ${FIND_ARGS} ; ...

1 个答案:

答案 0 :(得分:1)

我说不。 man find ...

  

如果成功处理所有文件,则查找状态为0的出口,如果发生错误,则查找大于0的出口。这是故意非常广泛的描述,但如果返回值不为零,则不应该依赖于查找结果的正确性。

测试输出可能适合查找。那不是一个" Bash成语"。如果这不够好并且您有可用的Bash,那么您可以使用 extglobs 和可能的 globstar 进行与[[的文件匹配测试。查找应仅用于复杂的递归文件匹配,或实际搜索文件,以及其他无法通过Bash功能轻松完成的事情。