我不知道自己做错了什么。我试图让grep返回目录中文件中的字符串匹配,但它只是返回后面跟着"is a directory"的路径。我查看了手册页,做了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 . )