bash: /bin/rm: Argument list too long

问题

当您试图删除、移动或者复制的文件名很长时,会出现此错误消息。
使用shell时,命令只能接受有限数量的参数。
当提供给命令的参数数量超过允许的参数数量时,将显示错误消息:

-bash: /bin/rm: Argument list too long

查看Linux命令最大参数的限制:

# getconf ARG_MAX
2097152

例子:

# rm *
-bash: /bin/rm: Argument list too long

解决方案

如果我们想删除目录中的文件,而保留目录,最好和最快的解决方案是先删除整个目录并再次重新创建它。

$cd ../
$ls -d mydirectory 首先查看目录的权限
$rm -fr mydirectory
$mkdir mydirectory

另一个解决方案是使用for循环删除所有文件:

$for i in *; do rm "$i"; done

或者使用Printfxargs

$printf '%s
$time echo -n * | tr ' ' '
$for i in *.txt; do rm "$i"; done
' | xargs -0 rm
' * | xargs -0 rm

或者

$for i in $( echo {a..z} ); do rm $i*.txt ; done

但是,上述解决方案有其自身的局限性,因为如果正则表达式没有写好,它也可能删除我们希望保留的文件。

示例:只删除* .txt文件:

##代码##

删除字母开头的txt文件:

##代码##
日期:2020-07-07 20:54:33 来源:oir作者:oir