3

我正在使用 bash 以下脚本在文件中查找字符串:

find $1 -name "$2" -exec grep -Hn "$3" {} \;

有时这个脚本失败了

grep: /proc/sysrq-trigger: Input/Output error

为了解决这个问题,我首先考虑从查找结果中排除这个文件。这是一个好主意,如果是的话,我该怎么做?有没有其他解决方案可以避免我的脚本失败?

4

2 回答 2

4

您可以像这样排除/procfind 中的所有目录:

find $1 -path /proc -prune -o -name "$2" -print -exec grep -Hn "$3" {} \;
于 2012-05-10T13:10:07.060 回答
2

您遇到的问题是,--exclude-dir当 grep 它自己正在执行文件系统递归(grep -r)时,它被设计为工作,而不是在 grep 与 find 一起使用时工作。为什么不将它与 xargs 结合使用,并用另一个 grep 过滤掉 proc 条目?

find $1 -name "$2" | grep -v '/proc' | xargs grep -Hn "$3" {} \;
于 2012-05-10T13:11:01.007 回答