所以我想从当前目录中的所有类型的文件夹中搜索一个字符串(模式而不是固定字符串),然后将包含模式(字符串)的文件夹名称附加到 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
(.
代表当前目录;将其更改为您希望开始搜索的任何目录)。