我可以在grep
中使用-s
来抑制错误,但是我在手册页中没有看到find
命令的等效命令......这是重定向STDERR〉/dev/null的唯一选项吗?
或者是否有一个选项可以处理这个问题?(如果需要,可以使用花哨的awk
和perl
解决方案)
示例:
$ 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
2条答案
按热度按时间92dk7w1h1#
您可以使用
2>/dev/null
重定向stderr
,例如:顺便说一句,您问题中的代码可以替换为:
如果至少有一个匹配的目录,则甚至不需要抑制
stderr
,因为find
将只搜索与此模式匹配的目录。zz2j4svz2#
我知道这并不是您所要求的,但我的典型方法是
find
一个肯定存在的路径,然后使用-path
标志进行过滤。因此,我将执行
find /home -path "not-a-path"
,而不是引发错误的find /home/not-a-path
,它不会引发错误。我必须这样做,因为当我在
make
文件中将一个失败的find
流传输到/dev/null
时,错误仍然会导致命令崩溃。