第一种情况:
在实际使用过程中,若一个目录下文件或文件夹太多,在执行;*” 命令时 会提示Argument list too long,如rm -rf /tmp/*命令下。
解决方案:
ls | xargs n 10 rm rf ls
SSH执行以上命令,输出所有的文件名(用空格分割) xargs就是将ls的输出,每10个为一组(以空格为分隔符),作为rm rf的参数 也就是说将所有文件名10个为一组,由rm rf删除。
第二种情况:
rm、cp、mv是unix下面常用到的档案处理指令,当我们需要删除大量的log档案,如果档案数太多就会出现此讯息【/bin/rm: Argument list too long】
解决方式如下:
例如要删除 /tmp/*.log
则执行【ls /tmp/*.log | xargs rm -f】这样就可以萝^__^,其他cp,mv同理!
第三种情况:
今日需要删除/tmp目录下的所有文件,文件数量比较多。
ls -lt /tmp | wc -l 385412
使用 rm * 后,系统提示错误 Argument list too long
原因是在linux下,试图传太多参数给一个系统命令(ls *; cp *; rm *; cat *; etc..)时,就会出现 Argument list too long错误。
解决方法如下:
使用find -exec 遍历,然后执行删除便可。
sudo find /tmp -type f -exec rm {} \;
在linux中删除大量文件时,直接用rm会出现:-bash: /bin/rm: 参数列表过长,的错误。
这时可以用find命令来结合使用。
例:
1、rm * -rf 改为:
find . -name "*" | xargs rm -rf '*' 就行了。
2、rm test* -rf 改为:
find . -name "test*" | xargs rm -rf "test*"
mv时报参数列表过长,
for i in *.m;do mv $i ${i%.m};done
于是求助于google,探索过程就省略了,直接说解决方法吧:
ls dir1 | xargs -t -I {} mv {} dir2/{}
这里的一对大括号是原文给的例子里用的,后来看了参数的用法,其实那对大括号是可以用任意字符串替换的,比如:
ls dir1 | xargs -t -I asdf mv asdf dir2/asdf
效果和大括号那一版是完全一样的,就是看起来有点儿不严肃。
需要说明的是,上面xargs的第二个参数,是大写的i,读作”爱;的那个字母,不是小写的L。至于参数的含义嘛,我忘了。
Linux下 报错;命令参数列表过长”,在用mv命令一次移动3万多个文件时失败了,原始命令类似这样:”mv $(ls dir1) dir2;。错误提示的中心思想是:”你这参数也太TM多了吧;。
按照LZ想法大概可以这么做:find /dir1/ -maxdepth 1 | xargs -i mv {} /dir2/
如果参数过长,使用tar比较简单
tar -C /dir1/ -cf - . | tar -xf - -C /dir2/
于是求助于google,探索过程就省略了,直接说解决方法吧:
ls dir1 | xargs -t -I {} mv {} dir2/{}
这里的一对大括号是原文给的例子里用的,后来看了参数的用法,其实那对大括号是可以用任意字符串替换的,比如:
ls dir1 | xargs -t -I asdf mv asdf dir2/asdf
效果和大括号那一版是完全一样的,就是看起来有点儿不严肃。
需要说明的是,上面xargs的第二个参数,是大写的i,读作”爱;的那个字母,不是小写的L。至于参数的含义嘛,我忘了。
另外4种方法
作为一个linux用户/系统管理员, 有些时候你会遇到以下错误提示:
[user@localhost foo]$ mv * ../foo2
bash: /bin/mv: Argument list too long
;Argument list too long”参数列表过长错误经常发生在用户在一行简单命令中提供了过多的参数而导致,经常在ls *, cp *, rm * 等中出现。
根据问题的原因以下提供了四种方法,可以根据自己的情况酌情选用
方法1 : 将文件群手动划分为比较小的组合
e.g 1:
[user@localhost foo]$ mv [a-l]* ../foo2
[user@localhost foo]$ mv [m-z]* ../foo2
这是最基本的方法,只是简单的使参数数量符合要求,这种方法应用范围有限,只适用于文件列表中的名字分布比较均匀,另外这也是个初级用户可以考虑的解决方案,不过需要很多重复命令和对文件名分布的观察与猜测。
方法2 : 使用find命令
e.g 2:
[user@localhost foo]$ find $foo -type f -name '*' -exec mv {}$foo2/. \;
方法2通过find命令,将文件清单输出到mv命令,使其一次处理一个,这样就完全避免了过量参数的存在,另外通过不同的参数,可以指定除了名称以外的时间戳,权限,以及inode等匹配模式。
方法2的缺点在于比较耗费时间。
方法3 : 创建shell函数
e.g 3.1:
function huge_mv ()
{whileread line1; do
mv foo/$line1 ../foo2
done
}
ls -1 foo/ | huge_mv
写一个shell函数并不涉及到某种程度的复杂性, 这种方法比方法1和方法2相比更加灵活。
下面我们来扩展一下例3.1 :
e.g 3.2:
function huge_mv ()
{whileread line1; do
md5sum foo/$line1 ~/md5sums
ls -l foo/$line1 ~/backup_list
mv foo/$line1 ../foo2
done
}
ls -1 foo/ | huge_mv
相比例3.1,例3.2生成了文件的md校验散列文件和名字备份,符合给自己留条后路的哲学。
另外可以根据自己的需要无限制的扩展功能。
方法4 : 终极解决方案,重新编译内核
首先使用这个方案之前要谨慎,因为涉及到修改内核源代码,在生产环境中还是要斟酌一下并做好测试。
另外,这个方法是从根本上解决的,一劳永逸的
这也是开放源码的好处之一
首先在内核源码中找到 include/linux/binfmts.h文件 ,搜索到以下字段:
/*
* MAX_ARG_PAGES defines the number of pages allocated for arguments
* and envelope for the new program. 32 should suffice, this gives
* a maximum env+arg of 128kB w/4KB pages!
*/
#define MAX_ARG_PAGES 32
修改 MAX_ARG_PAGES数值为 64 或者更高即可完善的解决参数受限问题。
然后 重新编译并启用新内核即可。
Linux Mint 20.2“Uma”中的新
EasyWSL工具将 Linux Docker 映
适用于 Linux 5.16 的新 Zst
适用于Linux的Windows子系统
Linux系统xlsatom命令如何使
Windows10系统开始菜单和Cortana无法工作的解
近日有Windows10系统用户来反应,在安装系统后电脑经常会很卡机......
阅读
PotPlayer字幕反了的解决方法
很多小伙伴在使用PotPlayer的时候经常会遇到各种各样的问题,例......
阅读
win10还有没有coem版
我们在安装win10操作系统的时候,可以通过多种途径进行下载安......
阅读
Zxy便签的使用方法
很多小伙伴在每天的工作生活中都有很多的事情需要处理,也会......
阅读
电源故障排查方法:怎样确认你的电源是
电源是计算机的重要组成部分,不仅负责为所有硬件提供稳定的......
阅读
抖音半透明背景视频制作
PC制造商表示AMD Threadripp
抖音一个人牵狗图片制作
KB5003698 [手动下载] Window
微软发布带外Windows 10 更新
KB5007484 22483.1011作为win11开
Windows 10:通过 LPE 漏洞通
Windows 10:漏洞允许破坏
Switch以撒的结合胎衣金手
《风帆纪元》角色怎么招
小森生活砂白木板怎么制
小影霸rx580显卡驱动装不上
旌宇显卡驱动怎么更新
Photoshop把选区虚线变成实
修改hosts文件危害
PPT开启自动保存并设置间
word文档标记为最终状态
努比亚Z9Max怎么设置字体大
win10开机黑屏很久才进入桌
网件netgear无线路由器设置
新买的荣耀路由X1 如何学
这篇文章主要介绍了Linux批量清空当前目录中的日志文件,需要的朋友可以参考下...
次阅读
这篇文章主要讲述了linux系统很卡的基本排查方法介绍。希望对大家会有帮助,下面就随小编一起去看看具体的操作吧...
次阅读
适用于 Linux 的 Windows 子系统既是一种启示,也是一场革命。现在是第二次迭代 (WSL2),该技术近年来取得了巨大进步,越来越多的人使用它来享受 Windows 中的 Linux 发行版...
次阅读
今天小编为大家分享的是为Llinux系统添加交换分区(swap space)的方法。希望对大家会有帮助,有需要的朋友一起去看看吧...
次阅读
今天小编为大家带来的是Linux开机报错unable to load selinux policy的解决方法,希望对大家会有帮助,有需要的朋友一起去看看吧...
次阅读
最近有些朋友问小编如何用Windows通过网络安装RedHat Linux?今天小编为大家带来的是用Windows通过网络安装RedHat Linux的方法,有需要的朋友一起去看看吧...
次阅读
今天小编要为大家分享的是Linux下安装vagrant过程遇到的问题解析,希望可以帮助到大家,有需要的朋友一起去看看吧...
次阅读
今天小编为大家带来的是Linux系统请求:系统救命稻草,希望对大家会有帮助,有需要的朋友一起去看看吧...
次阅读
在实际使用过程中,若一个目录下文件或文件夹太多,在执行“*” 命令时 会提示Argument list too long,如rm -rf /tmp/*命令下...
次阅读
最近一些朋友问小编Linux如何删除替换变量值?今天小编为大家带来的是Linux删除替换变量值的方法,希望对大家会有帮助,有需要的朋友一起去看看吧...
次阅读
今天小编为大家分享的是Linux以form表单形式上传文件讲解,希望对大家会有帮助,有需要的朋友可以参考下...
次阅读
最近一些朋友问小编ps命令显示uid而不是用户名如何解决?今天小编就为大家带来ps命令显示uid而不是用户名的解决方法,希望对大家会有帮助,有需要的朋友一起去看看吧...
次阅读
最近有些朋友问小编 Linux菱形乱码如何修改? 今天小编将为大家分享的是Linux菱形乱码的修改方法,希望对大家会有帮助,有需要的朋友可以参考下...
次阅读
近日,有些朋友问如何修改Linux账户的默认Shell类型?今天小编为大家分享的是修改Linux账户的默认Shell类型的方法,有需要的朋友可以参考下...
次阅读
最近一些朋友问小编Linux下如何修改文件描述符的大小?下面小编将为大家带来的是Linux下修改文件描述符的大小的方法,有需要的朋友一起去看看吧...
次阅读