如何使用 bash 脚本在文件内容中查找文件名?

How to find filename in file content with bash script?

我在我的 shell 中写了这个命令,但它没有按照我想要的方式执行,我无法弄清楚我做错了什么。我想从当前目录中获取在内容中包含其名称的文件。

find -type f -exec grep -il {} +

我明白 find -type f 给了我目录中的标准文件,-exec 在给定文件 ('+') 上执行以下带有模式的 grep 命令 - 即文件名。我对吗?因为它没有找到我为此目的专门创建的文件,所以我好像不明白什么。

on given file ('+')

+ 所有 找到的文件执行命令。 {} 被当前目录中的 文件列表 替换。

使用 -exec echo grep -il {} + 进行调试。

你想要:

-exec grep -Fil {} {} ';'

在名为 {} 的文件中搜索文件名 {} 作为模式。 ';' 终止命令。

我还添加了 -F 从字面上解释模式。

当前目录中的文件test.txt

文件内容包括“test”

find . -name 'test.txt' -exec grep -i 'test' {} \;