Perl 如何grep超过100万个文件?

Perl 如何grep超过100万个文件?,perl,shell,command-line,ssh,grep,Perl,Shell,Command Line,Ssh,Grep,我需要grep大约一百万个文件。如果有更好的方法,请告诉我。我在想也许有一种更快的方法可以在perl中实现 我要做的是导出其中包含文本httpsfile的每一行 以下是我试图运行的内容: grep 'httpsfile' * >> grepped.txt 下面是我得到的错误: -bash: /bin/grep: Argument list too long 任何帮助都将不胜感激。请尝试ls | xargs grep httpsfile只需将*更改为/或包含100万个文件的根目录即

我需要grep大约一百万个文件。如果有更好的方法,请告诉我。我在想也许有一种更快的方法可以在perl中实现

我要做的是导出其中包含文本
httpsfile
的每一行

以下是我试图运行的内容:

grep 'httpsfile' * >> grepped.txt
下面是我得到的错误:

-bash: /bin/grep: Argument list too long

任何帮助都将不胜感激。

请尝试
ls | xargs grep httpsfile

只需将
*
更改为
/
或包含100万个文件的根目录即可。您可能还需要添加
-r
,以使grep递归并查看嵌套目录


shell中的
*
扩展到所有文件。

如果需要,可以并行执行:

ls > /tmp/files
parallel -a /tmp/files --xargs -s 100 grep 'httpsfile'

除非您有大量的RAM,并且上百万个文件已经在缓冲区缓存中,否则并行化不会有任何帮助,因为操作将受到I/O限制,因此下面是最快的仍然可移植(POSIX)方式:


请注意,与公认的答案解决方案不同,使用
find
查找命名奇怪的文件不会失败。看看

无需为此编写任何代码-只需使用xargs.As(bash)行:
parallel-a
find . -exec grep httpsfile {} + > grepped.txt