【发布时间】:2015-04-23 13:56:53
【问题描述】:
我不知道我做错了什么。我试图让 grep 返回目录中文件中的字符串匹配项,但它只是返回后跟“是目录”的路径。我查看了手册页并执行了 grep --help,但我不明白语法。
【问题讨论】:
我不知道我做错了什么。我试图让 grep 返回目录中文件中的字符串匹配项,但它只是返回后跟“是目录”的路径。我查看了手册页并执行了 grep --help,但我不明白语法。
【问题讨论】:
您需要-r 进行递归。
下面会搜索some_directory寻找包含something的文件:
grep -l -r something some_directory
如果您不指定-r,grep 会认为您正在尝试搜索目录本身并且它会适当地响应:
grep: some_directory: Is a directory
使用-r,grep 了解您要在以some_directory 开头的目录树中查找文件。
要从文件名中删除路径,例如,我们可以使用basename:
grep --null -l -r something some_directory | xargs -0 -n1 basename
如果您只想删除 some_directory 而保留所有子目录,请使用:
( cd some_directory; grep -l -r something . )
【讨论】:
grep 不会单独执行此操作,但我们可以使用 basename 执行此操作。查看更新的答案。