我想在名称中包含“20121218”的文件中递归搜索“MY:STRING”字符串,输出应该给我文件名和位置。搜索也应查看子目录下的文件。
答案 0 :(得分:3)
使用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
答案 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