How to grep a string in a directory and all its subdirectories' files in LINUX?
在Linux中,如何对目录及其所有子目录文件中的字符串或文本进行grep??
- 您是否会就您遇到的grep -r或grep -r问题提供任何反馈?你在你的机器上查看了grep的手册页了吗?如果regex(字符串或文本)包含元字符,是否记得用单引号将其括起来?
如果您的grep支持-R,请执行以下操作:
如果没有,则使用find:
1
| find dir/ -type f -exec grep -H 'string' {} + |
1
| grep -r -e string directory |
-R用于递归;-e是可选的,但其参数指定要搜索的regex。有趣的是,posix grep不需要支持-R(或-R),但实际上我确信System v grep确实做到了,所以实际上它们(几乎)都做到了。有些版本的grep支持-R和(或可以想象地代替)-R;而fafict,它的意思是相同的。
- 我很肯定SVR3.2和SVR4 grep没有,因为我在那个时间段为SysV产品开发操作系统,当时我有一个rgrep shell脚本来包装它。不过,我再也没有一个要测试的了。
- @兰迪霍沃德:谢谢!SVR3.2和SVR4.0都非常古老,我发现我的记忆有问题并不惊讶。
- -R遵循符号链接,您可能需要也可能不需要。