参见英文答案 > Argument list too long error for rm, cp, mv commands 30个
我试图清理一些垃圾邮件并遇到问题.队列中的文件数量太大,以至于我的常用命令无法处理.它会给我一个关于太多论点的错误.
我通常这样做
grep -i [email protected] 1US* | awk -F: '{print $1}' | xargs rm
1US *可以是1US [a-zA-Z]之间的任何值.我唯一能做的就是运行这个可怕的装置.它的一个文件,包括1USa,1USA,1USb等,通过整个字母表.我知道他们必须是一种更有效地运行它的方法.
grep -s $SPAMMER /var/mailcleaner/spool/exim_stage1/input/1USa* | awk -F: '{print $1}' | xargs rm
grep -s $SPAMMER /var/mailcleaner/spool/exim_stage1/input/1USA* | awk -F: '{print $1}' | xargs rm
解决方法:
运行几个grep实例.代替
grep -i [email protected] 1US* | awk '{...}' | xargs rm
做
(for i in 1US*; do grep -li user@domain "$i"; done) | xargs rm
注意-l标志,因为我们只需要匹配的文件名.这将加速grep(在第一场比赛时终止)并使你的awk脚本不需要.这可以通过检查grep的返回状态和调用rm来改进,而不是使用xargs(xargs非常脆弱,IMO).如果你问,我会给你更好的版本.
希望能帮助到你.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。