开发者社区> 科技小能手> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

linux xargs 命令及argument list too long 的处理方法

简介:
+关注继续查看

xargs是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。它把一个数据流分割为一些足够小的块,以方便过滤器和命令进行处理。通常情况下,xargs从管道或者stdin中读取数据,但是它也能够从文件的输出中读取数据。xargs的默认命令是echo,这意味着通过管道传递给xargs的输入将会包含换行和空白,不过通过xargs的处理,换行和空白将被空格取代。

 

1. 当你尝试用rm 删除太多的文件,你可能得到一个错误信息:/bin/rm Argument list too long. 用xargs 去避免这个问题

find ~ -name ‘*.log’ -print0 | xargs -0 rm -f

 2. 获得/etc/ 下所有*.c 结尾的文件列表,有几种不同的方法能得到相同的结果,下面的例子仅仅是示范怎么实用xargs ,在这个例子中实用 xargs将find 命令的输出传递给ls -l

# find /etc -name "*.c" | xargs ls –l

3. 假如你有一个文件包含了很多你希望下载的URL, 你能够使用xargs 下载所有链接

# cat list.txt | xargs wget –c

 4. 查找所有的jpg 文件,并且压缩它

# find / -name *.jpg -type f -print | xargs tar -cvzf images.tar.gz

5. 原因是:一个文件夹下文件太多,使用rm删除就会出现/bin/rm: Argument list too long错误,当然使用别的命令也是一样的错误,像ls,chmod等。

解决方法:
1:
ls | xargs -n 10 rm -fr ls
就解决了,这句解释为:输出所有的文件名(用空格分割) xargs就是将ls的输出,每10个为一组(以空格为分隔符),作为rm -rf的参数也就是说将所有文件名10个为一组,由rm -rf删除,这样就不会超过命令行的长度了.

2:find . -maxdepth 1 -name "*.sh" -type f -exec rm -f {} \;

用 find  命令在当前目录查找,然后用exec命令执行


 办法就是使用find命令内置的 "-delete" 参数 ,使用这种方法删除文件,速度大概是 2000个文件/秒,速度比之前方法得到极大提高。当然也可以加上 "-print"参数来显示每个删除的文件。

find . -type f -delete

find . -type d -print -delete  

   但是我不建议加这个参数,如果你要观察删除文件的速度,我建议使用df -i 命令来查看indoe节点的变化情况。





移动7天前的备份文件

0 0 * * * find /root/backup -mtime +3 -name "*.gz"  | xargs -I {} mv {} /opt/backup



本文转自 Tenderrain 51CTO博客,原文链接:http://blog.51cto.com/tenderrain/1916885

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
linux find xargs
find . -type f -print |xargs file find / -name "core" -print | xargs > /tmp/core.
522 0
Linux find xargs rm .orig
/********************************************************************* * Linux find xargs rm .orig * 声明: * 本文主要是记录在用patch给系统打补丁时,补丁的源文件保存在.orig * 文件中,尤其是当打补丁失败时,该文件是会生成的,在操作完成之后,我们 * 当然会希望自动将.orig文件删除。
824 0
Linux Screen命令使用
参考URL: http://jingyan.baidu.com/article/295430f128d8ea0c7e005089.html ~~~~~~~~~~~~~~~~~~~~~~~~ 其它的不提,主要用的几个命令: A,screen -S screenname B,在screen窗口...
634 0
[20121121]关于linux下history命令.txt
[20121121]关于linux下history命令.txt昨天跟别人聊天,提到linux下history命令带来的安全隐患,主要是一些命令会记录在~/.bash_history中。
670 0
【Linux命令使用】任务控制相关命令
作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ Linux/Unix 区别于微软平台最大的优点就是真正的多用户,多任务。因此在任务管理上也有别具特色的管理思想。
667 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
ECS系统指南之Linux系统诊断
立即下载
Decian GNU/Linux安全合规之路
立即下载
从 Linux 系统内核层面来解决实际问题的实战经验
立即下载