Grep 如何在多个文件中并行搜索一个模式,并在第一次搜索后停止

Grep 如何在多个文件中并行搜索一个模式,并在第一次搜索后停止,grep,find,xargs,head,Grep,Find,Xargs,Head,我使用的是find folder/*/*/specific_folder-name“file*”-print 0 | xargs-0-p8 fgrep-m1--no-filename-A 1000数字格式| head-n1 我想在多个文件中并行搜索字符串,并在第一次匹配后停止 我怎样才能做到这一点呢?你可以用GNU并行来做到这一点,就像这样: parallel --halt now,success=1 grep -m 1 PATTERN ::: file* 或者,反过来说: find ...

我使用的是
find folder/*/*/specific_folder-name“file*”-print 0 | xargs-0-p8 fgrep-m1--no-filename-A 1000数字格式| head-n1

我想在多个文件中并行搜索字符串,并在第一次匹配后停止


我怎样才能做到这一点呢?

你可以用GNU并行来做到这一点,就像这样:

parallel --halt now,success=1 grep -m 1 PATTERN ::: file*
或者,反过来说:

find ... -print0 | parallel -0 --halt now,success=1 grep -m 1 PATTERN

我尝试了第二个选项:find/aaa/bbb/ccc/*/*/ddd-name”文件*“-print0 | parallel-0--halt now,success=1 grep-m 1 1234我得到了以下错误:在/path/path/path.pm行1234包含换行符的文件名上stat不成功我不相信
find
接受这样的通配符。请单独尝试
find
。我以前使用过find命令,它工作得非常好。有什么建议吗?我刚刚在我的macOS机器上测试了一下,效果很好。你在用什么操作系统?你有带换行符的文件名吗?您是否尝试过将您的模式用双引号引起来?如果您的文件位于
文件夹/../…/something
中,您可以查看是否有任何文件包含带有
find folder | grep-v“^folder”
的换行符,因为这会显示不以
文件夹开头的行。