exec的问题

参数太长

在使用 find命令的-exec选项处理匹配到的文件时, find命令将所有匹配到的文件一起传递给exec执行。但有些系统对能够传递给exec的命令长度有限制,这样在find命令运行几分钟之后,就会出现溢出错误argument line too long。错误信息通常是“参数列太长”或“参数列溢出”。这就是xargs命令的用处所在,特别是与find命令一起使用。

find命令把匹配到的文件传递给xargs命令,而xargs命令每次只获取一部分文件而不是全部,不像-exec选项那样。这样它可以先处理最先获取的一部分文件,然后是下一批,并如此继续下去。

进程过多

在有些系统中,使用-exec选项会为处理每一个匹配到的文件而发起一个相应的进程,并非将匹配到的文件全部作为参数一次执行;这样在有些情况下就会出现进程过多,系统性能下降的问题,因而效率不高; 而使用xargs命令则只有一个进程。另外,在使用xargs命令时,究竟是一次获取所有的参数,还是分批取得参数,以及每一次获取参数的数目都会根据该命令的选项及系统内核中相应的可调参数来确定。

查询当前目录下所有权限是777的文件

> find . -perm 777 | xargs ls -al

查询当前目录下所有的.txt文件,并输出到指定文件a.log(没有换行)

> find . -name *.txt | xargs echo > /tmp/a.log

xargs只是简单地把\n变成空格,那么可能存在一些问题。比如文件名带空格,这时候xargs就有问题了。

使用-n指定单行输出的个数

  • -n num 后面加次数,表示命令在执行的时候一次用的argument的个数,默认是用所有的。

查询当前目录下所有的.txt文件,并输出到指定文件b.log(有换行)

> find . -name *.txt | xargs -n 1 echo > /tmp/b.log

-n 1 每行只输出一个

查询当前目录下查找所有用户具有读、写和执行权限的文件,并收回相应的写权限

> find . -perm 777 | xargs chmod o-w

查找当前目录下所有的.txt文件,并找出包含rumenz字符串的文件

> find . -name *.txt | xargs grep -n "rumenz"

查找当前目录下所有的.txt文件,并移动到指定的目录

> find . -name *.txt | xargs -i cp -rf {} /tmp;

加-i 参数直接用 {}就能代替管道之前的标准输出的内容

使用-i参数默认的前面输出用{}代替,-I参数可以自定义前面的输出符号

自定义前面输出的占位符是[]

> find . -name *.txt | xargs -I [] cp -rf [] /tmp

-p参数提示是否执行

> find . -name *.log | xargs -p -i mv {} /tmp

-p参数会提示让你确认是否执行后面的命令,y执行,n不执行。

批量下载文件

url.txt都是需要下载的链接地址

> cat url.txt | xargs wget -c

总结:什么时候用-i

如果命令后面可以跟内容,且没有目的路径的时候,可以省略-i,否则得加上。

原文链接:https://rumenz.com/rumenbiji/linux-find-xargs.html
微信公众号:入门小站

Linux之find xargs相关推荐

  1. linux命令中xargs,在Linux上使用xargs命令的详细教程

    大家好,我是良许. 在使用 Linux 时,你是否遇到过需要将一些命令串在一起,但是其中一个命令不接受管道输入的情况呢?在这种情况下,我们就可以使用 xargs 命令. xargs 可以将一个命令的输 ...

  2. linux xargs命令_如何在Linux中使用xargs命令?

    linux xargs命令 The xargs command allows us to pass the output of one command as the input for another ...

  3. linux下find,xargs命令详解和实例

    在我们平时的系统管理中,查找文件是时常需要的一个操作,在Linux系统中有2个命令是必须要掌握的,如果我们真正掌握了这个命令已经他的常用参数的话,我们可以在工作中游刃有余,下面是我在网上找到的一点资料 ...

  4. flac3d命令流实例大全_如何在Linux上使用xargs命令

    大家好,我是良许. 在使用 Linux 时,你是否遇到过需要将一些命令串在一起,但是其中一个命令不接受管道输入的情况呢?在这种情况下,我们就可以使用 xargs 命令.xargs 可以将一个命令的输出 ...

  5. linux命令:xargs

    xargs        大多数 Linux 命令都会产生输出:文件列表.字符串列表等.但如果要使用其他某个命令并将前一个命令的输出作为参数该怎么办?例如,file 命令显示文件类型(可执行文件.as ...

  6. Linux 命令之 xargs -- 给其他命令传递参数的一个过滤器

    文章目录 一.命令介绍 二.选项参数 三.命令示例 (一)批量重命名目录中的文件 (二)给多个命令传递参数 一.命令介绍 xargs命令是给其他命令传递参数的一个过滤器,也是组合多个命令的一个工具.它 ...

  7. Linux: find和xargs用法整理

    昨天为了在一个目录下搜索文本文件的内容,发现ubuntu文件夹默认的搜索功能太简单了.要实现自定义搜索,还是得需要使用命令行.并且需要使用管道,xargs等"高级"指令 1.fin ...

  8. linux find和xargs

    Linux文件查找命令find,xargs详述 总结:zhy2111314 来自:LinuxSir.Org 整理:北南南北 摘要: 本文是find 命令的详细说明,可贵的是针对参数举了很多的实例,大量 ...

  9. Linux命令之xargs命令详解

    xargs是一个非常强大的命令,可以取一个命令的输出作为另一个命令的参数.下面就是几个关于如何有效使用xargs命令的实例 1. 当你使用rm命令去删除很多的文件时,你可能会得到错误信息:" ...

  10. Linux中的xargs命令(这是我发现的对于xargs命令的最好解释)

    目录 基本信息 命令格式 参数 实例 使用案例 资源拓展 基本信息 xargs(英文全拼: eXtended ARGuments)是给命令传递参数的一个过滤器,也是组合多个命令的一个工具. xargs ...

最新文章

  1. 计算机操作系统专题一:多道环境下进程同步与互斥制约关系的学习
  2. C#xml创建修改读取删除帮助类XmlHelper.cs
  3. 怎么在linux上修改mysql端口映射_如何在Linux中更改默认的MySQL / MariaDB端口
  4. 安装php扩展phpredis
  5. java中遍历实体类,获取属性名和属性值
  6. PoseNet: A Convolutional Network for Real-Time 6-DOF Camera Relocalization
  7. dede后台文章不能上传图片及缩略图的解决办法
  8. Hdu 4597记忆化搜索
  9. Mac里的airdrop传输文件
  10. Nmap小技巧——探测大网络空间、局域网中的存活主机
  11. 怎么使用计算机唱歌,声卡怎么用手机唱歌
  12. 求不大于N的最大质数
  13. 读书笔记:《死去之前,都是人生》
  14. 阅读不懂,图书之过——《大话设计模式》创作历程 (转载)
  15. 学会了C语言究竟能干什么呢?
  16. Uni-app API
  17. Openstack-nova(placement)组件部署流程
  18. 打印标签时如何解决打印偏移
  19. Java中正则表达式的使用
  20. 计算机gt是什么单位,数据存储计量单位除了BKMGT,还有什么?换算..._注册计量师_帮考网...

热门文章

  1. 【Vegas原创】导入结构一致表的SQL语句
  2. clion stfp 配置
  3. fail to build phoneME Feature-转
  4. 蓝桥杯 ADV-12 算法提高 计算时间
  5. 【iOS】Ambiguous reference to member 'tableView(_:numberOfRowsInSection:)'
  6. java如何将表添加到文本区_java – 在itext中向表中的单元格添加更多文本
  7. JBOSS5+ActiveMQ5.7集成
  8. 解决eclipse配置Tomcat时找不到server选项
  9. org.apache.catalina.loader.StandardClassLoader@1af33d6
  10. 关于Android工程师转成vue的三两事儿(4)--webpack