Argument

Argument list too long”错误解决方法汇总

那年仲夏 提交于 2021-01-01 07:41:46
这篇文章是回复前几天在论坛一个朋友提出的问题,今天有空,整理了一下,发布出来,供大家参考! 当Linux下试图传递太多参数给一个系统命令(ls *; cp *; rm *; cat *; etc…)时,就会出现”Argument list too long”错误。本文将提供4种解决方法,按复杂程度由低到高排列。 方法#1: 手动把命令行参数分成较小的部分 例1 mv [a-l]* ../directory2 mv [m-z]* ../directory2 这是4种方法里最简单的,但是远非理想的方法。你必须有办法平均分割文件,而且对于文件数目极多的情况,需要输入N遍命令。 方法#2: 使用find命令 例2 方法2通过find命令筛选文件列表,把符合要求的文件传递给一系列命令。 优点是find命令有很强大的筛选功能,而且,也许是最重要的,这个方法只需要1行命令。 唯一的缺点是, 方法2需要遍历文件,因此耗时较多。 方法#3: 建立函数 例3 #!/bin/bash # 设定需要删除的文件夹 RM_DIR='/data/files' cd $RM_DIR for I in `ls` do rm -f $I done 方法#4:重新编译Linux内核 最后一个方法需要2个字:谨慎,这个方法很高级,因此没有经验的linux用户最好不要尝试。此外,在永久使用前,务必在系统环境中全面测试。