通常、このスタイルのコマンドを使用grep
して、いくつかのファイルを実行します。
find / -xdev -type f -print0 | xargs -0 grep -H "800x600"
これが実際に行うことは、システム上のすべてのファイルのリストを作成し、各ファイルに対してgrep
、指定された引数と各ファイルの名前で実行することです。
-xdev
引数は、それが他のファイルシステムを無視しなければならないことがわかりを伝える-これは、次のような特殊なファイルシステムを回避するために良いです/proc
。ただし、通常のファイルシステムも無視します。たとえば、/ homeフォルダーが別のパーティションにある場合、検索されません-と言う必要がありますfind / /home -xdev ...
。
-type f
ファイルのみを検索することを意味するため、ディレクトリ、デバイス、およびその他の特殊ファイルは無視されます(ディレクトリgrep
内で再帰して内部のファイルで実行されます- grep
ディレクトリ自体では実行されませんが、とにかく動作しません)。そして、出力に常にファイル名を印刷する-H
ようにgrep
指示するオプション。
find
ファイルのリストをフィルタリングするためのあらゆる種類のオプションを受け入れます。たとえば-name '*.txt'
、.txtで終わるファイルのみを処理します。-size -2M
2メガバイトより小さいファイルを意味します。-mtime -5
は、過去5日間に変更されたファイルを意味します。これらを-a for および and -o for またはで結合し、'('
括弧')'
を使用して式をグループ化します(引用符で囲んで、シェルがそれらを解釈しないようにします)。たとえば、次のとおりです。
find / -xdev '(' -type f -a -name '*.txt' -a -size -2M -a -mtime -5 ')' -print0 | xargs -0 grep -H "800x600"
見てみましょman find
可能フィルタの完全なリストを参照してください。
Permission denied
エラーを出力しませんか?rootまたは通常のユーザーとして実行しましたか?