【发布时间】:2020-07-23 16:23:27
【问题描述】:
我正在尝试查找目录中与特定模式匹配的所有文件的名称。我编写了以下 bash 命令:
find . -type f | xargs -r -n 25 egrep -l -m 1 'pattern'
这可以正常工作并提供所需的输出。
./subdir1/file1
./subdir2/file2
但是,该模式只出现一次,并且在每个文件的前 10 行内。但是上面的命令是扫描整个文件,这不是必须的(文件很大,目录下的文件也很大,导致执行时间很长)。
我已尝试 head 每个文件的前 10 行,然后使用以下命令执行 grep:
find . -type f | xargs -r -n 25 head -n 10 egrep -l -m 1 'pattern'
但这最终会打印 10 行而不是提供匹配项。
我该怎么做?
谢谢
【问题讨论】:
-
你可以试试
awk '/pattern/ {print FILENAME; exit} NR > 10 { exit }或类似的 -
是的,AWK 可以扫描大文件。