一、场景

这个命令是错误的

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了。

最新文章

  1. Fake chat script for website download
  2. javascript按回车键触发事件
  3. Mysql5.7版本编译安装及配置
  4. enmo_day_04
  5. &amp;nbsp|&amp;quot|&amp;amp|&amp;lt|&amp;gt等html字符转义
  6. mysqli连接数据库函数
  7. 栈和队列的Java实现
  8. 【PAT】1041. Be Unique (20)
  9. 使用OTP动态口令(每分钟变一次)进行登录认证
  10. 关于模拟登陆微博(PC)
  11. vue中的数据监听以及数据交互
  12. OAF隐藏显示题头
  13. Javascript - ExtJs - Itemselector
  14. node 和npm 版本更新
  15. Z-index研究 opacity和z-index一起使用
  16. Win10系列:VC++调用自定义组件3
  17. [转]Firefox+Burpsuite抓包配置(可抓取https)
  18. jQuery动画animate方法使用介绍
  19. hello Groovy
  20. java常见错误--Access restriction: The type BASE64Encoder

热门文章

  1. c++入门之关于cin,cout以及数据流的认识
  2. 复审Partner
  3. M2贡献分分配方案
  4. Maven入门系列(一):Eclipse中使用Maven
  5. Filter学习:项目第八阶段
  6. Linux (centos7) 防火墙命令
  7. PP模块的主要功能及标准业务流程
  8. RabbitMQ基础知识详解
  9. LoadRunner12 Java Vuser API语法举例
  10. 一本通1601【例 5】Banknotes