私は与えられた内容を含むすべてのファイルを見つけるコマンドを書きたいと思います。たとえば、 "iso file"というフレーズを持つすべてのファイル。私はこのコマンドを書いた:ファイルに含まれているコンテンツを検索するにはどうすればよいですか?
find -exec -grep -l "iso file"{}
しかし、 '-exec'の引数がないというメッセージが表示されます。このコマンドの仕組みは?
私は与えられた内容を含むすべてのファイルを見つけるコマンドを書きたいと思います。たとえば、 "iso file"というフレーズを持つすべてのファイル。私はこのコマンドを書いた:ファイルに含まれているコンテンツを検索するにはどうすればよいですか?
find -exec -grep -l "iso file"{}
しかし、 '-exec'の引数がないというメッセージが表示されます。このコマンドの仕組みは?
-exec
アクションでは、実行するセミコロンで終了するコマンドを指定する必要があります。セミコロンを省略しました。また、grep
コマンドの名前にハイフンを追加しましたが、その結果はシステム上のコマンドの名前ではない可能性があります。さらに、このように進めば、ディレクトリ(または特別なファイル)ではなく通常のファイルだけを検討したいと思うかもしれません。あなたは、このようなコマンドを書き込むことによって、これらすべての懸念に対処することができます:
find -type f -exec grep -l "iso file" {} \;
一方、find
はgrep
は、すべて独自に再帰検索を実行できることを考えると、ここで助けより妨害の詳細です:
grep -lR "iso file" .
xargsを使用してすべてのファイル/ディレクトリを印刷するには、次のコマンドを使用できます。
find ./ -type f -print | xargs grep -l "iso file"
grepコマンドから '-l'パラメータを削除して、このような行を印刷することもできます。
find ./ -type f -print | xargs grep "iso file"
ファイル名にスペースやファンキーな文字が含まれていると、これは失敗します。 'find ./ -type f -print0 |のようなことをするのがよい。 xargs -0 grep -l "iso file" '...これはゼロです。 – gilez
構文が少しオフです。 'find。 -exec grep -l "iso file" {} \; 'これはすべてのファイルに対して新しいgrepを生成することに注意してください。 'grep -r" isoファイル ".'が効率的かもしれません。 – blackghost