我需要大约100万个文件。如果有更好的方法,请告诉我。我以为在perl中可能有更快的方法。
我要做的是导出包含文本httpsfile
的每一行。
以下是我正在尝试运行的内容:
grep 'httpsfile' * >> grepped.txt
这是我得到的错误:
-bash: /bin/grep: Argument list too long
任何帮助都将不胜感激。
答案 0 :(得分:3)
如果您愿意,可以并行执行:
ls > /tmp/files
parallel -a /tmp/files --xargs -s 100 grep 'httpsfile'
答案 1 :(得分:3)
除非你有大量的RAM并且你的百万文件已经在缓冲区缓存中,否则并行化将没有任何帮助,因为操作将受I / O限制,因此这里是最快的可移植(POSIX) )方式:
find . -exec grep httpsfile {} + > grepped.txt
请注意,与接受的答案解决方案不同,使用find
时,使用奇怪命名的文件不会失败。看看https://unix.stackexchange.com/questions/128985/why-not-parse-ls
答案 2 :(得分:2)
尝试ls | xargs grep httpsfile
。
答案 3 :(得分:2)
只需将*
更改为./
,或者包含100万个文件的根目录。您可能还需要添加-r
以使grep递归并查看嵌套目录。
*
扩展为所有文件。