【发布时间】:2015-11-06 20:11:33
【问题描述】:
我想在我的文件系统中获取包含给定文本的文件列表。此外,仅应考虑位于由模式给出的目录中的文件。
假设我的文件系统中有许多名为 myDir 的目录,如下所示:
/usr
/myDir
/tmp
/myDir
/anotherDir
现在我想获取这些目录中包含文本的所有文件。
所以基本上我需要执行这些步骤:
- 在整个文件系统上循环所有目录名称
myDir - 为该列表中的每个目录获取包含搜索字符串的文件
到目前为止我尝试的是find /etc /opt /tmp /usr /var -iname myDir -type d -exec ls -exec grep -l "SearchString" {} \;
但这不起作用,因为find 的结果是我可能不会用作grep 输入的目录。我假设我必须在 find 和 grep 之间做一步,但不知道如何做到这一点。
【问题讨论】:
-
当然,但这需要很长时间,我想通过提供一些有关用于搜索的文件夹的信息来简化这一点。
-
find /path1 /path2 -type f -exec grep -H "your string" {}\;就足够了。 -
@fedorqui 问题是我不知道文件所在的目录(绝对路径),只知道它们的名称。因此
path1可以是/usr/path1甚至/etc/someotherdir/myDir。 -
好的,所以您想在您知道名称的目录中查找文件,但不知道它们的确切放置位置。然后,如果您不了解更多信息,则必须从
/查找所有内容。
标签: linux grep find filesystems