3

次のスクリプトを使用して、ファイル内の文字列を検索しています。

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

このスクリプトが失敗することがありました

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

これを解決するために、私は最初にこのファイルを検索結果から除外することを考えます。それは良い考えですか、もしそうなら、どうすればそれを行うことができますか?スクリプトが失敗しないようにする他の解決策はありますか?

4

2 に答える 2

4

/proc次のように、findですべてのディレクトリを除外できます。

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

あなたが抱えている問題は、grepがfindで使用されているときではなく、grep自体が--exclude-dirファイルシステムの再帰()を実行しているときに機能するように設計されていることです。grep -r代わりにxargsと組み合わせて、別のgrepでprocエントリを除外してみませんか?

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