linux中 tar 报参数列表过长,四种解决”Argument list too long”参数列表过长的办法...
在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中 tar 报参数列表过长,四种解决”Argument list too long”参数列表过长的办法...相关推荐
- python token post403原因_Django的POST请求时因为开启防止csrf,报403错误,及四种解决方法...
Django默认开启防止csrf(跨站点请求伪造)攻击,在post请求时,没有上传 csrf字段,导致校验失败,报403错误 解决方法1: 注释掉此段代码,即可. 缺点:导致Django项目完全无法防 ...
- npm install报错 npm ERR 的四种解决办法
整理了自己在安装过程中碰到的四种npm ERR及解决方式 错误一. npm ERR! A complete log of this run can be found in: npm ERR! C:Us ...
- linux++tar打包目录,linux中tar命令打包目录与排除目录打包linux操作系统 -电脑资料...
本文章来给各位朋友详细介绍关于linux中tar命令打包目录与排除目录打包有需要了解tar命令的使用方法的朋友可进行参考参考, 打包压缩目录很简单如下代码如下复制代码 tar -czf small.t ...
- .tar.gz文件在linux中tar解压出错
.tar.gz文件在linux中tar解压出错 报错: tar: This does not look like a tar archive tar: Skipping to next header ...
- linux中.tar文件怎么解压
linux中.tar文件怎么解压 1.打包压缩tar -cvf etc.tar /app/etc #打包 tar -zcvf pack.tar.gz pack/ #打包压缩为一个.gz格式的压缩包 t ...
- Linux查看tar实用程序,linux中tar命令详解
Linux系统下最常用的打包程序就是tar了,使用tar程序打出来的包我们常称为tar包,tar包文件的命令通常都是以.tar结尾的.生成tar包后,就可以用其它的程序来进行压缩.这一打包程序主要靠L ...
- tar文件怎么解压linux,linux中.tar文件怎么解压
linux中.tar文件怎么解压 1.打包压缩tar -cvf etc.tar /app/etc #打包 tar -zcvf pack.tar.gz pack/ #打包压缩为一个.gz格式的压缩包 t ...
- linux怎么解压tar文件,linux中.tar文件怎么解压
linux中.tar文件怎么解压 1.打包压缩tar -cvf etc.tar /app/etc #打包 tar -zcvf pack.tar.gz pack/ #打包压缩为一个.gz格式的压缩包 t ...
- 在Linux中查找和删除重复文件的4种方法
大神教你在Linux中查找和删除重复文件的4种方法 在本教程中,您将学习如何使用rdfind和fdupes命令行工具以及称为DupeGuru和FSlint的GUI工具在Linux中查找和删除重复文件. ...
最新文章
- 如何安装 jupyter lab 和 jupyter notebook?
- R 语言聚类关联规则
- php添加填空,PHP之preg_replace_callback(),将填空题的[[]]替换成______
- CCF201312-5 I’m stuck
- 《计算机网络》学习笔记 ·003【数据链路层】
- javaweb 初学建议
- Ubuntu11.10 源码编译 Nginx
- MySQL 5.6.21 最新版的安装
- 【渝粤教育】电大中专营销策划原理与实务作业 题库
- 用.net改写的uploadify多文件上传控件
- Spotfire 表达式之日期和时间函数
- vue PC端项目页面做rem布局(大屏展示)
- QT入门(一)——QT概述
- JUC —— 常用辅助类
- css禁止文本或文字图标点击被选中
- 旧电脑搭建linux服务器
- C++贪心——纪念品分组
- [深度应用]·实战掌握PyTorch图片分类简明教程
- 「艾尔斯马克绘」用马克笔如何画出栩栩如生的植物呢?
- gzip: stdin: not in gzip format .
热门文章
- mail ru android,mail ru app下载
- status c语言_STM32 嵌入式C语言教程--第四课C语言中的存储空间与位域
- localhost、127.0.0.1对网络编程造成不通的说明
- Android开发之通过ImageView名称从文件夹拿到ImageView的Drawable对象的方法
- 拉文大学计算机科学,拉文大学
- 微型计算机开机密码丢失,校诡实录微机教室攻略 电脑密码是多少[多图]
- leetCode 28. Implement strStr() 字符串
- 南洋股份拟57亿元收购天融信 老牌安全厂商曲线登录资本市场
- Swif语法基础 要点归纳(一)
- wordpress的手动更新