如何在linux中搜索名称中包含特定字符串的文件中的字符串?

时间:2012-12-18 10:06:00

标签: linux string file search

我想在名称中包含“20121218”的文件中递归搜索“MY:STRING”字符串,输出应该给我文件名和位置。搜索也应查看子目录下的文件。

3 个答案:

答案 0 :(得分:3)

使用findgrep

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

答案 1 :(得分:3)

使用递归grep,如下所示。不需要find

grep -Flr --include="*20121218*" "MY:STRING" /path/to/dir

由于您正在搜索固定字符串而不是正则表达式,请使用-F选项加快速度。

答案 2 :(得分:1)

我更喜欢使用:

  找到。 -type f(-name' 20121218 ') - print0 | xargs -0 grep --color -n MYSTRING

...它将显示文件路径,名称和行号(带颜色)MYSTRING位于包含20121218的文件中。

EX。来自我的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”

     

./拱/臂/ CONFIGS / G2-KDDI-perf_defconfig:41:CONFIG_ARCH_MSM8974 = Y

     

./拱/臂/ CONFIGS / G2-KDDI-perf_defconfig:44:CONFIG_MACH_MSM8974_G2_KDDI = Y

     

./拱/臂/ CONFIGS / lgl22_defconfig:314:CONFIG_ARCH_MSM8974 = Y

     

./拱/臂/ CONFIGS / G2-open_com-perf_defconfig:503:CONFIG_MACH_MSM8974_A1 = Y

     

./拱/臂/ CONFIGS / G2-open_com-perf_defconfig:516:CONFIG_SND_SOC_MSM8974 = Y