当 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 $?
应该适合你。