2017-04-04 4 views
0

私は与えられた内容を含むすべてのファイルを見つけるコマンドを書きたいと思います。たとえば、 "iso file"というフレーズを持つすべてのファイル。私はこのコマンドを書いた:ファイルに含まれているコンテンツを検索するにはどうすればよいですか?

find -exec -grep -l "iso file"{} 

しかし、 '-exec'の引数がないというメッセージが表示されます。このコマンドの仕組みは?

+0

構文が少しオフです。 'find。 -exec grep -l "iso file" {} \; 'これはすべてのファイルに対して新しいgrepを生成することに注意してください。 'grep -r" isoファイル ".'が効率的かもしれません。 – blackghost

答えて

2

-execアクションでは、実行するセミコロンで終了するコマンドを指定する必要があります。セミコロンを省略しました。また、grepコマンドの名前にハイフンを追加しましたが、その結果はシステム上のコマンドの名前ではない可能性があります。さらに、このように進めば、ディレクトリ(または特別なファイル)ではなく通常のファイルだけを検討したいと思うかもしれません。あなたは、このようなコマンドを書き込むことによって、これらすべての懸念に対処することができます:

find -type f -exec grep -l "iso file" {} \; 

一方、findgrepは、すべて独自に再帰検索を実行できることを考えると、ここで助けより妨害の詳細です:

grep -lR "iso file" . 
0

xargsを使用してすべてのファイル/ディレクトリを印刷するには、次のコマンドを使用できます。

find ./ -type f -print | xargs grep -l "iso file" 

grepコマンドから '-l'パラメータを削除して、このような行を印刷することもできます。

find ./ -type f -print | xargs grep "iso file" 
+0

ファイル名にスペースやファンキーな文字が含まれていると、これは失敗します。 'find ./ -type f -print0 |のようなことをするのがよい。 xargs -0 grep -l "iso file" '...これはゼロです。 – gilez

関連する問題