如何在当前目录中的所有类型的文件夹(无档案)中查找字符串(模式)

如何在当前目录中的所有类型的文件夹(无档案)中查找字符串(模式)

所以我想从当前目录中的所有类型的文件夹中搜索一个字符串(模式而不是固定字符串),然后将包含模式(字符串)的文件夹名称附加到 file.txt。

我的代码是:

for f in *.sh do if [ -f "$f" ]; then found=$(grep "$1" "$f") if [ ! -z "$found" ]; then echo "$f" >> test.txt fi fi done

我应该怎么做才能在所有类型的文件夹中搜索我的模式,而不仅仅是 .sh 并附加它们的名称(如果它包含作为输入 $1 提供的模式)。 或者 grep 或其他东西是否有任何变化?

答案1

这里您不需要 shell 循环:grep 有一个-r递归搜索选项和一个-l打印匹配文件名称的选项。

我可能还会补充-I一点,从搜索中排除二进制文件。因此

grep -Irl "$1" . > test.txt

.代表当前目录;将其更改为您希望开始搜索的任何目录)。

相关内容