获取模式给定目录中包含给定文本的文件列表
Get list of files that contain given text within directory given by pattern
我想获取我的文件系统中包含给定文本的文件列表。此外,仅应考虑位于模式给定的目录中的文件。
假设我的文件系统中有许多名为 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
之间执行一步,但不知道如何执行此操作。
我想我明白了,将向您展示一个实现我需要的小脚本:
for i in $(find / -type d -iname myDir) do
for j in $(find "$i" -type f) do
grep "SearchString" "$j"
done
done
这将为我提供包含 SearchString
且位于名为 myDir
的任何文件夹中的所有文件。
我想获取我的文件系统中包含给定文本的文件列表。此外,仅应考虑位于模式给定的目录中的文件。
假设我的文件系统中有许多名为 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
之间执行一步,但不知道如何执行此操作。
我想我明白了,将向您展示一个实现我需要的小脚本:
for i in $(find / -type d -iname myDir) do
for j in $(find "$i" -type f) do
grep "SearchString" "$j"
done
done
这将为我提供包含 SearchString
且位于名为 myDir
的任何文件夹中的所有文件。