linux - Grep 查找 dir 中所有文件中的字符串,如果找到则将输出文件名附加到 txt?

标签 linux bash shell

我有一个包含 2000 个文件的目录。我需要知道目录中的哪些文件包含文件中的字符串“example”,并将文件名输出到存在的list.txt文件中,因此我最终得到list.txt,其中包含所有包含“example”的文件的文件名。

#!/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 仍为空),但我得到了实例数“找到”的回显。

最佳答案

尝试将目录路径放在“”标记中,如下所示:

#!/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 正在搜索的单词时都会起作用。

关于linux - Grep 查找 dir 中所有文件中的字符串,如果找到则将输出文件名附加到 txt?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56973390/

相关文章:

linux - 2 个或更多 fork 系统调用如何工作?

shell - 如何使用 grpc_cli 传递元数据?

c++ - 使用 OpenSSL BIO 的非阻塞 I/O

json - 我怎样才能在shell脚本中curl请求带有 header 的请求

linux - 在 bash 脚本中查找命令导致目录出现 "No such file or directory"错误?

arrays - 如何从 bash 函数返回数组

返回 bool 值和消息的 Pythonic 方式

linux - 将循环的批处理文件转换为循环的 shell 脚本

linux - 删除扩展的 ASCII 字符。 Linux 脚本 (128-255)

linux - git push 两步验证失败的解决方法(linux)