问题描述
我在一个目录下有大约500万个文本文件-都是相同的格式(没什么特别的,只是纯文本文件,每行都有一些整数)。我想计算所有这些文件中的最大和最小行数,以及两个文件名(一个用于最大,另一个用于最小)。
我首先尝试像这样写出所有行数(然后尝试如何从此列表中找到最小值和最大值):
wc -l `find /some/data/dir/with/text/files/ -type f` > report.txt
bash:/ usr / bin / wc:参数列表太长
解决方法
参数列表的长度为limit。由于您有数百万个文件传递给wc,因此命令肯定会越过这一行。
最好调用find -exec COMMAND
:
find /some/data/dir/with/text/files/ -type f -exec wc -l {} + > report.txt
在这里,每个找到的文件find
将附加在-exec
之后的命令的参数列表中,以代替{}
。在达到参数长度之前,将运行该命令,并且将以相同的方式在命令的新运行中处理其余找到的文件,直到完成整个列表为止。
有关详情,请参见find
中的man page。
感谢Charles Duffy对该答案的改进。