使用 gnu-find 的退出状态测试文件是不是存在

Posted

技术标签:

【中文标题】使用 gnu-find 的退出状态测试文件是不是存在【英文标题】:Test file existence with exit status from gnu-find使用 gnu-find 的退出状态测试文件是否存在 【发布时间】:2012-06-29 18:54:48 【问题描述】:

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】:

我会说不。 man find...

如果所有文件都成功处理,find 退出状态为 0,如果发生错误,则大于 0。这是特意做一个很笼统的描述,但是如果返回值非零,就不要依赖于find结果的正确性。

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

【讨论】:

以上是关于使用 gnu-find 的退出状态测试文件是不是存在的主要内容,如果未能解决你的问题,请参考以下文章

windows测试模式

登录认证程序

测试 java 程序是不是调用 System.exist - 不退出 Junit

使用 Qt 判断 PC 是不是退出待机状态

shell编程之条件测试

Python练习之基础语法数据类型字符编码文件操作