デバイス上のファイルシステムブロック全体をgrepする

デバイス上のファイルシステムブロック全体をgrepする

指示

grep -rHinF --colour=always -e "aa:aa:aa:aa" /

出力

grep: /dev/geom.ctl: Operation not supported by device
grep: /dev/devctl: Device busy

grepデバイスを待機しているため、続行できないようです。このようなデバイスをスキップするにはどうすればよいでしょうか?

答え1

利用可能な場合はfind、以下を試してください。

find / -type f -exec grep -rHinF --colour=always -e "aa:aa:aa:aa" {} +

これは通常のファイルにのみ適用されるため、ブロック デバイスと文字デバイスはスキップされます。を参照してくださいman find

/procまたはのようなディレクトリをスキップしたいかもしれません/sys。Stephane Chazelas がコメントで指摘しているように、そこにある一部のファイルは、読み取るときにブロックされます (開いたままになり、検索がハングします)。これを行うには、ファイルシステムの残りの部分が 1 つのデバイス上にあると仮定して、 -xdevaka.-mountディレクティブを試すことができます。ディレクティブが機能する場合は-fstype、それがより良いでしょう (残念ながら、Linux では機能しません)。

私の意見としては、これをいじるよりも、実際に検索したいトップレベル ディレクトリに対してこのプロセスを繰り返すだけでよく、一度にすべてを実行しようとするよりも (その場合は find は必要ないかもしれません...)

関連情報