我正在使用 bash 以下脚本在文件中查找字符串:
find $1 -name "$2" -exec grep -Hn "$3" {} \;
有时这个脚本失败了
grep: /proc/sysrq-trigger: Input/Output error
为了解决这个问题,我首先考虑从查找结果中排除这个文件。这是一个好主意,如果是的话,我该怎么做?有没有其他解决方案可以避免我的脚本失败?
您可以像这样排除/proc
find 中的所有目录:
find $1 -path /proc -prune -o -name "$2" -print -exec grep -Hn "$3" {} \;
您遇到的问题是,--exclude-dir
当 grep 它自己正在执行文件系统递归(grep -r
)时,它被设计为工作,而不是在 grep 与 find 一起使用时工作。为什么不将它与 xargs 结合使用,并用另一个 grep 过滤掉 proc 条目?
find $1 -name "$2" | grep -v '/proc' | xargs grep -Hn "$3" {} \;