0

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

4

3 回答 3

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
于 2012-12-18T10:08:44.360 回答
3

使用递归grep,如下所示。没有必要find

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

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

于 2012-12-18T10:17:32.867 回答
1

我更喜欢使用:

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

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

前任。来自我的 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: 布尔“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

于 2014-08-16T06:56:39.323 回答