如何解决将查找输出作为参数传递时出现“参数列表过长”错误
我在一个目录下有大约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对该答案的改进。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。