【发布时间】:2012-12-05 12:19:23
【问题描述】:
我想在名称中包含“20121218”的文件中递归搜索“MY:STRING”字符串,输出应该给我文件名和位置。搜索也应该在子目录下的文件中查找。
【问题讨论】:
我想在名称中包含“20121218”的文件中递归搜索“MY:STRING”字符串,输出应该给我文件名和位置。搜索也应该在子目录下的文件中查找。
【问题讨论】:
使用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
【讨论】:
如下所示使用递归grep。不需要find。
grep -Flr --include="*20121218*" "MY:STRING" /path/to/dir
由于您正在搜索固定字符串而不是正则表达式,因此请使用 -F 选项加快速度。
【讨论】:
find 和mtime 选项。
find 是否有类似的加速选项?
我更喜欢使用:
找到 . -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: 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
【讨论】: