bash:使用带有长参数列表的cat / grep

时间:2015-02-14 07:46:46

标签: bash grep

我在bash中有以下结构:

cat myfiles_* | grep "mystring" > summary.txt

如果文件太多,命令将失败,"参数列表太长"。

通常,人们会使用xargs来避免"参数列表太长"错误,但在这种情况下,文件必须连接,因此这不是一个选项。

是否有其他方法可以过滤" mystring"从(太)许多文件的列表?

2 个答案:

答案 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