我有一个包含2000个文件的目录。我需要知道目录中的哪些文件在文件中包含字符串“ example”,并将文件名输出到存在的list.txt文件,因此我最终得到包含所有文件名的list.txt包含“示例”。
#!/bin/bash
files = /dir/*
for f in $files
do
if grep -i "example" $f; then
echo "found"
echo $f >> ~/list.txt
fi
done
因此,我希望list.txt包含目录中带有字符串“ example”的文件的列表。
我没有执行追加操作(list.txt保持为空),但是我得到了回声“找到”的实例数。
答案 0 :(得分:1)
您可以为此使用grep -l
:(仅显示匹配文件的文件名):
grep -i -l "example" * >>~/list.txt
答案 1 :(得分:1)
尝试将目录路径放在“”标记中,如下所示:
#!/bin/bash
files="/path/to/files/*"
for f in $files
do
if grep -i "example" $f; then
echo "found"
echo $f >> ~/found.txt
fi
done
我刚刚测试了上面的脚本,并且每次更改grep搜索的单词时都会工作。
答案 2 :(得分:1)
grep -i -l 'example' -- * >> ~/list.txt
或
grep -i -l 'example' ./* >> ~/list.txt