问题
当您试图删除、移动或者复制的文件名很长时,会出现此错误消息。
使用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
或者使用Printf
和xargs
:
$printf '%s$time echo -n * | tr ' ' '' * | xargs -0 rm$for i in *.txt; do rm "$i"; done' | xargs -0 rm
或者
$for i in $( echo {a..z} ); do rm $i*.txt ; done
但是,上述解决方案有其自身的局限性,因为如果正则表达式没有写好,它也可能删除我们希望保留的文件。
示例:只删除* .txt
文件:
删除字母开头的txt文件:
##代码##日期:2020-07-07 20:54:33 来源:oir作者:oir