当文件未找到时,查找命令 + exe 状态差异从 0

当文件未找到时,查找命令 + exe 状态差异从 0

当 find 命令找不到文件时,如何启用 find 命令从 0 开始打印 exe 状态差异?

根据我的示例,当我尝试查找 test1.txt 文件时,$? 设置为 0,但我希望获得与 0 不同的值,因为未找到文件

 [root@om-1 tmp]# touch test.txt
 [root@om-1 tmp]# find /var/tmp -name  test.txt
 /var/tmp/test.txt
 [root@om-1 tmp]# echo $?
                  0
 [root@om-1 tmp]# find /var/tmp -name  test1.txt (test1.txt not under /var/tmp)
 [root@om-1 tmp]# echo $?
                  0

答案1

你不能。

find手册页中:

 EXIT STATUS
        find  exits with status 0 if all files are processed successfully, 
        greater than 0 if errors occur.   This is deliberately
        a very broad description, but if the return value is non-zero, 
        you should not rely on the correctness of the  results  of find.

退出状态0只是说:我设法处理所有文件而没有错误(例如权限问题)。

一个解决方案:

COUNT=`find / -type f -name "thisfiledoesnnotexist" -print | wc -l` 
ECHO $COUNT
0

答案2

当数据库中找不到该文件时,locate 将返回 1

答案3

尝试以下 shell 条件:

[ "$(find /var/tmp -name test.txt)" ] && echo Found || echo Not found

这与以下内容基本相同:

[ "$(find /var/tmp -name test.txt)" '!=' '' ] && echo Found || echo Not found

答案4

对你来说使用是find强制性的吗?你确切知道某个文件应该放在哪里吗?那么例如

stat /var/tmp/test.txt; echo $?
stat /var/tmp/test1.txt; echo $?

应该适合你。

相关内容