Grep在目录中所有文件中的字符串,如果发现输出文件名追加到txt?

时间:2019-07-10 14:53:04

标签: linux bash shell

我有一个包含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保持为空),但是我得到了回声“找到”的实例数。

3 个答案:

答案 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