Bash 查找-抑制“;没有这样的文件或目录;错误
我可以在Bash 查找-抑制“;没有这样的文件或目录;错误,bash,unix,find,Bash,Unix,Find,我可以在grep中使用-s来抑制错误,但是我在手册页中没有看到与find命令等效的命令。。。是重定向STDERR>/dev/null的唯一选项吗 还是有一个选项可以处理这个问题?(如果需要,可以使用fancyawk和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_cont
grep
中使用-s
来抑制错误,但是我在手册页中没有看到与find
命令等效的命令。。。是重定向STDERR>/dev/null的唯一选项吗
还是有一个选项可以处理这个问题?(如果需要,可以使用fancyawk
和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>/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
将只在与此模式匹配的目录中搜索。重定向stderr有什么问题?为什么要使用awk和perl等外部工具?在不知道问题出在哪里的情况下,很难提出解决方案您可以在调用findtest-d/mnt/16_c/$dir/data/&&find之前测试目录是否存在……
所以根本不需要重定向谢谢,没有想到通配符会阻止这一点!如果-exec
部分出现问题,会发生什么情况?我不想犯这样的错误。