grep 不排除目录,挂起

grep 不排除目录,挂起

我正在寻找服务器上包含文本字符串的文件"sometext",但我想排除在/var/www/sometext文件夹(及其子文件夹)中的搜索。

所以我做了以下事情:

grep -rl "sometext" / --exclude-dir=/var/www/sometext

然而,存在两个问题:

  1. 结果仍然包含我想要排除的文件夹中的文件,并且

  2. grep最终挂起(下图)

在此处输入图片描述


我的问题:

  1. 为什么会grep返回我想要排除的文件夹内的文件?

  2. 为什么会grep挂起?而且挂起之后,我该如何再次获得提示?

  3. 附加问题:在排除文件夹规范中添加尾随星号会如何改变结果--exclude-dir=/var/www/sometext*

答案1

问题 1 和问题 3 是相关的,可以一次回答。根据grep手册页(重点是我的):

–exclude-dir=DIR

排除符合以下条件的目录模式目录来自递归搜索。

因此基本上你用该选项指定的是图案而不是目录本身,这意味着/var/www/sometext*甚至/var/www/sometext/*会扩展并匹配指定的任何文件/子目录(第二个更准确,因为第一个可以匹配名称以 开头的其他目录sometext

问题 2 可以解释,因为您可能正在grepping/dev目录内,该目录包含系统的所有设备,特别是其中一些设备被视为“无限”,例如,因此命令永远不会结束。使用来匹配所有特殊目录(如等)/dev/zero是个好主意。--exclude-dir/dev/sys

相关内容