我在bash中有以下结构:
cat myfiles_* | grep "mystring" > summary.txt
如果文件太多,命令将失败,"参数列表太长"。
通常,人们会使用xargs来避免"参数列表太长"错误,但在这种情况下,文件必须连接,因此这不是一个选项。
是否有其他方法可以过滤" mystring"从(太)许多文件的列表?
答案 0 :(得分:4)
尝试这样做可以避免bash的globbing引起的“参数列表太长”错误:
find . -name 'myfiles_*' -type f -exec grep "mystring" {} \; > summary.txt
如果您不想遍历子目录,还可以向-maxdepth 1
提供find
选项。这与您的cat myfiles_*
行为兼容。
答案 1 :(得分:0)
您不应将cat
用于自行读取数据的程序,请尝试:
grep "mystring" myfiles_* > summary.txt
您还可以尝试awk
awk '/mystring/' myfiles_* > summary.txt