一、场景

这个命令是错误的

1
find ./ -perm +700 |ls -l

这样才是正确的

1
find ./ -perm +700 |xargs ls -l

 二、用法

1
2
3
4
5
6
7
8
9
10
11
12
[root@localhost tmp]# xargs --help
Usage: xargs [-0prtx] [--interactive] [--null] [-d|--delimiter=delim]
       [-E eof-str] [-e[eof-str]]  [--eof[=eof-str]]
       [-L max-lines] [-l[max-lines]] [--max-lines[=max-lines]]
       [-I replace-str] [-i[replace-str]] [--replace[=replace-str]]
       [-n max-args] [--max-args=max-args]
       [-s max-chars] [--max-chars=max-chars]
       [-P max-procs]  [--max-procs=max-procs] [--show-limits]
       [--verbose] [--exit] [--no-run-if-empty] [--arg-file=file]
       [--version] [--help] [command [initial-arguments]]
 
Report bugs to <bug-findutils@gnu.org>.

 三、示例

1、压缩所有的日志文件到每一个文件

1
find ./ -type f  -name "*.log" | xargs -i -t  tar -zcvf {}.tar.gz {}

2、压缩所有的图片文件到一个文件

1
find ./ -name *.jpg -type f -print | xargs tar -zcvf images.tar.gz

3、文件内容替换

1
find ./ -maxdepth 2 -name a -print | xargs -t -i sed -i '1 i\111' '{}'

4、权限修改

1
find ./ -perm -7 -print | xargs chmod o-w

5、查看文件类型

1
find ./ -type f -print | xargs file

6、删除多个文件

1
find ./ -name "*.log" -print0 | xargs -i -0 rm -f {}

7、复制多个文件

1
2
find ./ -type f -name "*.txt" | xargs -i cp {}  /tmp/
find ./ -type f -name "*.txt" | xargs -I {} cp {}  /tmp/

三、注意事项

1、加-i 参数直接用 {}就能代替管道之前的标准输出的内容;加 -I 参数 需要事先指定替换字符

2、cshell和tcshell中,需要将{}用单引号、双引号或反斜杠

3、如果需要处理特殊字符,需要使用-0参数进行处理

相比之下,也不难看出各自的缺点
1、exec 每处理一个文件或者目录,它都需要启动一次命令,效率不好; 
2、exec 格式麻烦,必须用 {} 做文件的代位符,必须用 \; 作为命令的结束符,书写不便。
3、xargs 不能操作文件名有空格的文件;

综上,如果要使用的命令支持一次处理多个文件,并且也知道这些文件里没有带空格的文件,
那么使用 xargs比较方便; 否则,就要用 exec了。

xargs与exec详解的更多相关文章

  1. 2.7 xargs和exec详解【转】

    本文转载自:http://ask.apelearn.com/question/13323 常用在查找中exec主要是和find一起配合使用,而xargs就要比exec用的地方要多了. exec  应用 ...

  2. linux shell脚本学习xargs命令使用详解

    作用是将参数列表转换成小块分段传递给其他命令,以避免参数列表过长的问题 xargs是给命令传递参数的一个过滤器,也是组合多个命令的一个工具.它把一个数据流分割为一些足够小的块,以方便过滤器和命令进行处 ...

  3. xargs -i参数详解

    学习所需,文章转载过来! xargs与find经常结合来进行文件操作,平时删日志的时候只是习惯的去删除,比如 # find . -type f -name "*.log" | xa ...

  4. Java魔法堂:找外援的利器——Runtime.exec详解

    一.前言 Java虽然五脏俱全但总有软肋,譬如获取CPU等硬件信息,当然我们可以通过JNI调用C/C++来获取,但对于对C/C++和Windows API不熟的码农是一系列复杂的学习和踩坑过程.那能不 ...

  5. linux下xargs命令用法详解 【转】

    转自:http://blog.chinaunix.net/uid-128922-id-289992.html xargs在linux中是个很有用的命令,它经常和其他命令组合起来使用,非常的灵活. xa ...

  6. linux下xargs命令用法详解

    原文:http://blog.chinaunix.net/uid-128922-id-289992.html xargs在linux中是个很有用的命令,它经常和其他命令组合起来使用,非常的灵活. xa ...

  7. 转 linux下xargs命令用法详解

    xargs在linux中是个很有用的命令,它经常和其他命令组合起来使用,非常的灵活. xargs是给命令传递参数的一个过滤器,也是组合多个命令的一个工具.它把一个数据流分割为一些足够小的块,以方便过滤 ...

  8. (十四)docker exec 详解

    1. 作用 在运行的容器中执行命令 2. 语法 docker exec [OPTIONS] CONTAINER COMMAND [ARG...] OPTIONS说明: -d :分离模式: 在后台运行 ...

  9. exec命令详解

    基础命令学习目录首页 原文链接: exec: 在bash下输入man exec,找到exec命令解释处,可以看到有”No new process is created.”这样的解释,这就是说exec命 ...

随机推荐

  1. Bing词典分析

    0x01 Bug测试结果 本次测试的是Bing词典wp版本V4.5.2,经过测试,共发现如下Bug. 1.更新后,旧版本首页的每日单词与文章推荐不能重新获得,部分搜索历史记录丢失. 2.在单词挑战模式 ...

  2. mooc linux学习总结

    通过八周的学习获得了很多知识.       首先,通过网课老师形象生动的讲述和描述一些专业词汇,使我更加深刻的记住并掌握了这些内容:动态的展示堆栈的变化,更容易理解一段汇编代码:分析操作系统的工作,记 ...

  3. 毕业设计 之 三 mooodle及bigbluebutton使用笔记(未完成)

    毕业设计 之 三 mooodle及bigbluebutton使用笔记 作者:20135216 平台:windows10 备注:N把辛酸泪 附:在准备过程中其他的一些零碎小问题 一.关于moodle 1 ...

  4. github个人作业

    信息学院本科生课程设计 题目                    文件加密和解密 课程名称 面向对象程序设计课程设计 课程编号 X031749 所在专业 计算机科学与技术 所在班级 计科高职13-3 ...

  5. “数学口袋精灵”第二个Sprint计划(第六~八天)

    “数学口袋精灵”第二个Sprint计划----第六天~第八天进度 任务分配: 冯美欣:欢迎界面的背景音乐完善 吴舒婷:游戏界面的动作条,选择答案后的音效 林欢雯:代码算法设计 第六天: 进度: 冯美欣 ...

  6. 传参在mybatis的sql映射文件中正确获取

    1.单个参数: 非自定义对象 传参:getStuById(Integer id): 取值:#{id} 单个基本类型参数,随便取值都行:#{ok} 对象: 传参:saveStudent(Student ...

  7. Hitchhiker 是一款开源的 Restful Api 测试工具

    Hitchhiker 是一款开源的 Restful Api 测试工具 开源API测试工具 Hitchhiker v0.4更新 - 没有做不到,只有想不到 Hitchhiker 是一款开源的 Restf ...

  8. 安装phpredis扩展

    本文是根据菜鸟教程中的内容而写的,因为按照教程中做法来操作,中间遇到一些问题,我在centos6.5和ubuntu16.4中都遇到了,所以写在这里.强烈建议你先看完这篇博客,然后再操作,能省不少事. ...

  9. [转帖]UEFI和BIOS

    UEFI和Legacy及UEFI+Legacy启动的区别 https://www.cnblogs.com/net5x/p/6850801.html 一直给人装系统 但是连这些最基本的都不知道 感觉自己 ...

  10. [转载] 虚拟机下面安装windows+oracle ASM的过程

    转帖:https://www.2cto.com/database/201303/195261.html 最开始的时候 我找了一个挺好的教程 安装过 但是已经找不到了,先转载一下这个内容,后续再测试完善 ...