0

サブディレクトリ内のファイルから文字列を検索したい。bundle/ にいるように。バンドル/には、複数のサブディレクトリと複数のtxtファイルがあり、次のようなことをしたい

  find . -type f -exec grep "\<F8\>" {} \;

文字列を含むファイルを取得したい < F8 >

このコマンドは機能し、文字列を見つけますが、ファイル名を返すことはありません

4

4 に答える 4

2
grep -rl '<F8>' .

この-rオプションは、次のディレクトリから再帰的に検索するように grep に指示します。.

この-lオプションは、行自体ではなく、一致したファイル名のみを表示するように指示します。

出力は次のようになります。

./thisfile
./foo/bar/thatfile

これを 1 つのファイルのみに制限する場合は| head -1、行末に追加します。

次のような出力が必要な場合:

./thisfile:My text contains the <F8> string
./foo/bar/thatfile:didn't remember to press the <F8> key on the

その後、オプションをオフのままにすることができ-lます。ファイル名にはコロンが含まれる可能性があり、ファイル名のコロンは grep の出力ではエスケープされないため、この出力は安全に解析できないことに注意してください。

于 2012-06-08T04:36:43.570 に答える
1

単体でも使えgrepます。

grep -r '<F8>' .
于 2012-06-08T01:33:45.410 に答える
0

個人的には、 を使用する方が簡単だと思いますack。(ack-grepは、同じ名前の別のソフトウェアと混同しないように、Ubuntu のリポジトリで使用される名前です。) ほとんどの主要なリポジトリで利用できます。

コマンドはack -a "<F8>"(またはack-grep -a "<F8>"Ubuntuで)になります。オプションは、-aすべてのファイル タイプを検索することです。

例:

テストファイル

Line 1
Line 2
Line 3
<F8>
<F9>
<F10>
Line 4
Line 5
Line 6

出力:

$ ack -a "<F8>"
testfile
4:<F8>
于 2012-06-08T04:55:29.347 に答える
0

これにより、一致するすべてのファイルと行番号が一覧表示されます。

grep -nR '<F8>' *
于 2012-06-08T01:36:48.387 に答える