unix find -抑制“无此类文件或目录”错误

ca1c2owp  于 2023-01-05  发布在  Unix
关注(0)|答案(2)|浏览(227)

我可以在grep中使用-s来抑制错误,但是我在手册页中没有看到find命令的等效命令......这是重定向STDERR〉/dev/null的唯一选项吗?
或者是否有一个选项可以处理这个问题?(如果需要,可以使用花哨的awkperl解决方案)
示例:

$ for dir in `ls /mnt/16_c/`; do find /mnt/16_c/$dir/data/ -mtime +180 -type f -exec echo {} \;; done
find: `/mnt/16_c/test_container/dat/': No such file or directory
92dk7w1h

92dk7w1h1#

您可以使用2>/dev/null重定向stderr,例如:

find /mnt/16_c/$dir/data/ -mtime +180 -type f -exec echo {} \; 2>/dev/null

顺便说一句,您问题中的代码可以替换为:

find /mnt/16_c/*/data/ -mtime +180 -type f 2>/dev/null

如果至少有一个匹配的目录,则甚至不需要抑制stderr,因为find将只搜索与此模式匹配的目录。

zz2j4svz

zz2j4svz2#

我知道这并不是您所要求的,但我的典型方法是find一个肯定存在的路径,然后使用-path标志进行过滤。
因此,我将执行find /home -path "not-a-path",而不是引发错误的find /home/not-a-path,它不会引发错误。
我必须这样做,因为当我在make文件中将一个失败的find流传输到/dev/null时,错误仍然会导致命令崩溃。

相关问题