我不知道我做错了什么。我正在尝试让grep在目录中的文件中返回字符串匹配,但它只是返回路径后跟'是一个目录'。我查看了手册页并做了grep --help,但我不懂语法。
答案 0 :(得分:3)
递归需要-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 . )