grep - 打印 grep 当前正在搜索的文件的文件名

d-b*_*d-b 2 grep macos

我在获取grep找到匹配项的文件名时没有问题,但是,我正在搜索的文件层次结构中的某些内容需要永远(数小时)来搜索(它是 2000 个文件中的 1.4 GB 数据) SSD 所以它不应该花那么长时间),我想知道什么。因此,我想要某种详细的输出,其中 grep 在处理它们时列出每个文件。

如何才能做到这一点?

在 Mac 上使用 BSD grep。

tha*_*isp 5

grep在开始搜索之前,您必须调用单独的进程,并打印文件名。当然,这会更慢,但在您的情况下,由于grep启动加载时间很小,与当前情况相比,它不会打扰您。

使用查找和执行:

find . -type f -exec sh -c 'printf "checking: %s\n" "$1"; grep pattern "$1"' sh {} \;
Run Code Online (Sandbox Code Playgroud)

或者 find 和 mass exec,调用一个 shell 来循环

find . -type f -exec sh -c 'for f do printf "checking: %s\n" "$f"; grep pattern "$f"; done' sh {} +
Run Code Online (Sandbox Code Playgroud)

或者使用 find 和 xargs,对文件参数使用 GNU 零分隔:

find . -type f -print0 | xargs -0 sh -c 'for f do printf "checking: %s\n" "$f"; grep pattern "$f"; done'
Run Code Online (Sandbox Code Playgroud)

顺便说一句,我看到你在 macOS 上,请考虑安装 GNU 软件,用于 grep、sed、awk 等。