当test -e file
不够灵活时,我倾向于使用以下Bash成语来检查文件是否存在:
if [ -n "$(find ${FIND_ARGS} -print -quit)" ] ; then
echo "pass"
else
echo "fail"
fi
但由于我只对布尔值感兴趣,是否有任何${FIND_ARGS}
可让我这样做:
if find ${FIND_ARGS} ; ...
答案 0 :(得分:1)
我说不。 man find
...
如果成功处理所有文件,则查找状态为0的出口,如果发生错误,则查找大于0的出口。这是故意非常广泛的描述,但如果返回值不为零,则不应该依赖于查找结果的正确性。
测试输出可能适合查找。那不是一个" Bash成语"。如果这不够好并且您有可用的Bash,那么您可以使用 extglobs 和可能的 globstar 进行与[[
的文件匹配测试。查找应仅用于复杂的递归文件匹配,或实际搜索文件,以及其他无法通过Bash功能轻松完成的事情。