获取模式

时间:2015-11-06 11:21:07

标签: linux grep find filesystems

我想获得一个包含文件系统中给定文本的文件列表。此外,只应考虑位于由模式给出的directoy中的文件。

所以假设我的文件系统中有许多名为myDir的目录,如下所示:

/usr
  /myDir
/tmp
  /myDir
  /anotherDir

现在我想获取那些包含文本的目录中的所有文件。

基本上我需要执行以下步骤:

  1. 在整个文件系统上循环所有目录名myDir
  2. 对于该列表中的每个目录,获取包含搜索字符串
  3. 的文件

    我到目前为止尝试的是find /etc /opt /tmp /usr /var -iname myDir -type d -exec ls -exec grep -l "SearchString" {} \;

    然而这不起作用,因为find的结果是我不能用作grep的输入的目录。我假设我必须在findgrep之间做一步,但无法了解如何执行此操作。

1 个答案:

答案 0 :(得分:1)

我想我得到了它,并会向你展示一个可以实现我需要的小脚本:

for i in $(find / -type d -iname myDir) do
    for j in $(find "$i" -type f) do         
        grep "SearchString" "$j"
    done
done

这将为我提供包含SearchString的所有文件,这些文件位于名为myDir的任何文件夹中。