名前に「20121218」が含まれるファイルで「MY:STRING」文字列を再帰的に検索したい場合、出力にはファイル名と場所が表示されます。検索では、サブディレクトリの下のファイルも検索する必要があります。
3 に答える
grep
以下に示すように、再帰を使用します。の必要はありませんfind
。
grep -Flr --include="*20121218*" "MY:STRING" /path/to/dir
正規表現ではなく固定文字列を検索しているため、-F
オプションを使用して高速化します。
とを使用find
しgrep
ます。
find . -type f -name '*20121218*' -exec fgrep -l "MY:STRING" {} \;
説明:
find
コマンド検索。
.
現在のディレクトリの検索を開始します。
-type f
ファイルにのみ関心があります。
-name
ファイル名の一致'*20121218*'
-exec
見つかったファイルに対して次のコマンドを実行します。
fgrep
文字列 grep を修正しました。
-l
一致を含むファイル名のみを出力します。
{}
コマンドからの一致したファイルのリストfind
。
\;
デリミタ。
編集:
$ find . -type f -mtime -18
私は使用することを好みます:
探す 。-type f ( -name ' 20121218 ' ) -print0 | xargs -0 grep --color -n MYSTRING
...これにより、20121218 を含むファイル内で MYSTRING が配置されているすべての場所で、ファイル パス、名前、および行番号 (色付き) が表示されます。
元。私のAndroidカーネルソースから:
探す 。-type f ( -name ' config ' ) -print0 | xargs -0 grep --color -n MSM8974
多くを返しますが、ここにいくつかあります:
./arch/arm/mach-msm/Kconfig:254:config ARCH_MSM8974
./arch/arm/mach-msm/Kconfig:255: bool "MSM8974"
./arch/arm/configs/g2-kddi-perf_defconfig:41:CONFIG_ARCH_MSM8974=y
./arch/arm/configs/g2-kddi-perf_defconfig:44:CONFIG_MACH_MSM8974_G2_KDDI=y
./arch/arm/configs/lgl22_defconfig:314:CONFIG_ARCH_MSM8974=y
./arch/arm/configs/g2-open_com-perf_defconfig:503:CONFIG_MACH_MSM8974_A1=y
./arch/arm/configs/g2-open_com-perf_defconfig:516:CONFIG_SND_SOC_MSM8974=y