Linux 下/bin/rm: Argument list too long 解决方法(最全)
March 25, 2018
本文将会通过不同方法来解决在Linux命令行下通过rm命令删除大批量文件的时候遇到的“Argument list too long”的问题。 因为linux命令对传入的参数个数有限制,所以超过限制的时候,系统就会输出参数过长的问题。
Table of Contents
查看命令行参数允许的长度大小
执行命令如下:
#getconf ARG_MAX
命令输出如下:
root@devops:~# getconf ARG_MAX 2097152
通过AWK命令结合RM命令来删除大批量文件
当通过rm命令直接删除大批量文件的时候,系统会报错,那么可以将rm命令结合AWK命令来进行删除操作,避免“/bin/rm: Argument list too long”的问题。
例如要删除当前目录下所有文件,执行下面命令:
# ls -l |awk '{print "rm -rf" , $9}'| sh
命令输出如下:
root@devops:~/osetc# ls -l 总用量 24 -rw-r--r-- 1 root root 24202 3月 18 23:30 fio1.txt -rw-r--r-- 1 root root 0 3月 24 23:53 fio.txt root@devops:~/osetc# ls -l |awk '{print "rm -rf" , $9}'| sh root@devops:~/osetc# ls -l 总用量 0
通过xargs命令结合rm命令删除大批量文件
我们可以通过执行ls命令将要删除命令列出,并将其输出通过管道符传给xargs命令,然后再调用rm命令来删除传过来的文件,进而解决 “/bin/rm: Argument list too long”的问题。执行命令如下:
# ls | xargs rm -rf
命令输出如下:
root@devops:~/osetc# ls fio1.txt fio.txt root@devops:~/osetc# ls | xargs rm -rf root@devops:~/osetc# ls
通过find命令结合xargs命令来删除大批量文件
我们也可以通过find命令查找要删除的文件,然后将查找到的文件传给xargs命令,并通过rm命令删除,这样也可以解决“/bin/rm: Argument list too long”的问题。
执行下面的命令:
# find ./ -name "*.txt" | xargs rm -rf
命令输出如下:
root@devops:~/osetc# ls fio1.txt fio.txt root@devops:~/osetc# find ./ -name "*.txt" | xargs rm -rf root@devops:~/osetc# ls root@devops:~/osetc#
通过自定义shell脚本来删除大批量文件
我们也可以通过自己编写一个shell 脚本来实现大批量文件的删除,比如通过for循环来删除每个文件,这也就可避免““/bin/rm: Argument list too long”的问题。
要执行的脚本如下:
#!/bin/bash DIR='/root/osetc' # 指定要删除的文件的目录 cd $DIR # 切换目录到指定删除文件的目录 for I in `ls` do #将ls命令的输出传给for循环 rm -rf $I done
命令输出如下:
root@devops:~/osetc# ls fio1.txt fio.txt root@devops:~# vi delF.sh root@devops:~# chmod u+x delF.sh root@devops:~# ./delF.sh root@devops:~# ls /root/osetc/ root@devops:~#
99%的人还阅读了:
0 Comments