xargs 和 exec详解

exec主要和find一起配合使用,xargs比exec用的地方要多。

xargs应用

把管道符前面的输出作为xargs后面的命令的输入。好处在于可以简化步骤。常常和find一起使用,#find . -mtime +10 |xargs rm

(1)xargs可以批量修改文件名,更精准一点的说法是批量增加文件名。

[root@shiyanji tmp]# touch 1.txt 2.txt 3.txt 4.txt

[root@shiyanji tmp]# ls

1.txt  2.txt  3.txt  4.txt

[root@shiyanji tmp]# ls *.txt|xargs -n1 -i{} mv {} {}_bak ##-i{} 中间不能有空格 可以只跟-i

[root@shiyanji tmp]# ls

1.txt_bak  2.txt_bak  3.txt_bak  4.txt_bak

注:

xargs -n1 -i{} 类似for循环,-n1的意思是一个一个对象的去处理-i{} 把前面列出的对象用{}取代,mv {} {}_bak 相当于重命名。很实用的命令,掌握。-n1可以省略不要!


(2)xargs可用于拷贝

[root@shiyanji tmp]# ls *.txt_bak |xargs -n1 -i{} cp {} /

[root@shiyanji tmp]# cd /

[root@shiyanji /]# ls

1.txt_bak  4.txt_bak  dev   lib         mnt   root     srv  usr

2.txt_bak  bin        etc   lost+found  opt   sbin     sys  var

3.txt_bak  boot       home  media       proc  selinux  tmp

注:上面的操作意思是将/tmp目录下的*.txt_bak文件拷贝到根目录下。

(3)xargs可拷贝的时候进行重命名

[root@shiyanji tmp]# ls *.txt_bak |xargs -n1 -i{} cp {} /{}.bak ##/{}.bak中间没有空格

[root@shiyanji tmp]# cd /

[root@shiyanji /]# ls

1.txt_bak      3.txt_bak      bin   home        mnt   sbin     tmp

1.txt_bak.bak  3.txt_bak.bak  boot  lib         opt   selinux  usr

2.txt_bak      4.txt_bak      dev   lost+found  proc  srv      var

2.txt_bak.bak  4.txt_bak.bak  etc   media       root  sys

注:上面的操作是将/tmp目录下的*.txt_bak拷贝到根目录并重命名为*.txt_bak.bak。

(4)xargs与find的配合使用

运用一:删除文件操作

[root@shiyanji ~]# cd /tmp

[root@shiyanji tmp]# ls

1.txt_bak  2.txt_bak  3.txt_bak  4.txt_bak  filelist  yum.log

[root@shiyanji ~]# find /tmp  -name *.txt_bak |xargs -n1 -i{} rm -rf {}

[root@shiyanji ~]# cd /tmp

[root@shiyanji tmp]# ls

filelist  yum.log

运用二:重命名文件操作

[root@shiyanji /]# cd /tmp

[root@shiyanji tmp]# ls

1.txt_bak  2.txt_bak  3.txt_bak  4.txt_bak  filelist  yum.log

[root@shiyanji ~]# find /tmp -name *.txt_bak |xargs -n1 -i{} mv {} {}.wtf

[root@shiyanji ~]# cd /tmp

[root@shiyanji tmp]# ls

1.txt_bak.wtf  2.txt_bak.wtf  3.txt_bak.wtf  4.txt_bak.wtf  filelist  yum.log

exec 应用


find命令时,经常使用一个选项就是 -exec,可以达到和xargs一样的效果。

运用一:删除文件

例1:[root@shiyanji ~]# find /tmp -name *.txt* -exec rm -rf {}\;##{}\中间要有空格!

find: 遗漏“-exec”的参数

[root@shiyanji ~]# find /tmp -name *.txt* -exec rm -rf {} \;

[root@shiyanji ~]# cd /tmp

[root@shiyanji tmp]# ls

filelist  yum.log

例2:

#find . -mtime +10 -exec rm -rf {} \;

这个命令也是把{}作为前面find出来的文件的替代符,后面的\为;的脱意字符,不然脱意字符,shell会把这里的分号 ; 当做这个命令行

的结尾,认为后面还有其他的任务。-exec也能实现上面的更改文件名的需求。

运用二:重命名文件

[root@shiyanji tmp]# ls

1.txt_bak  2.txt_bak  3.txt_bak  4.txt_bak

[root@shiyanji tmp]# cd

[root@shiyanji ~]# find /tmp -name *.txt_bak -exec mv {} {}.wtf \;

[root@shiyanji ~]# cd /tmp

[root@shiyanji tmp]# ls

1.txt_bak.wtf  2.txt_bak.wtf  3.txt_bak.wtf  4.txt_bak.wtf

运用三:拷贝文件并重命名

[root@shiyanji ~]# find / -name *.txt_bak -exec cp {} /tmp/{}.www \;

[root@shiyanji ~]# cd /tmp

[root@shiyanji tmp]# ls

1.txt_bak.www  2.txt_bak.www  3.txt_bak.www  4.txt_bak.www

本文转自品鉴初心51CTO博客,原文链接:http://blog.51cto.com/wutengfei/1925244,如需转载请自行联系原作者

xargs 和 exec详解相关推荐

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

    xargs是给命令传递参数的一个过滤器,也是组合多个命令的一个工具.它把一个数据流分割为一些足够小的块,以方便过滤器和命令进行处理.通常情况下,xargs从管道或者stdin中读取数据,但是它也能够从 ...

  2. linux进程--exec详解(四)

    1.exec 系统调用exec是以新的进程去代替原来的进程,但进程的PID保持不变.因此,可以这样认为,exec系统调用并没有创建新的进程,只是替换了原来进程上下文的内容.原进程的代码段,数据段,堆栈 ...

  3. linux下xargs命令用法详解

    From:http://biancheng.dnbcw.info/shell/268829.html xargs在 linux中是个很有用的命令,它经常和其他命令组合起来使用,非常的灵活. xargs ...

  4. python中exec是什么意思_Python中的进程分支fork和exec详解

    在python中,任务并发一种方式是通过进程分支来实现的.在linux系统在,通过fork()方法来实现进程分支. 1.fork()调用后会创建一个新的子进程,这个子进程是原父进程的副本.子进程可以独 ...

  5. java spring启动和终止_springBoot jar启动以停止脚本参数详解

    一.启动脚本 Springboot 项目打成jar包后,在Linux环境上一般有如下几种启动方式: 1. "java -jar XXX.jar " 命令结尾没有 "&am ...

  6. linux中which命令详解,Linux下which命令使用详解(转)

    我们经常在linux要查找某个文件,但不知道放在哪里了,可以使用下面的一些命令来搜索: which 查看可执行文件的位置. whereis 查看文件的位置. locate 配合数据库查看文件位置. f ...

  7. C语言再学习 -- Xargs用法详解

    参看:Xargs用法详解(原创) 简介 之所以能用到这个命令,关键是由于很多命令不支持 | 管道来来传递参数,而日常工作中有这个必要,所以就有了 xargs 命令,例如: 这个命令是错误的: find ...

  8. 详解的wc find xargs zip gzip bzip2 xz tar sftp命令或者协议

    目录 文本内容统计命令 wc 查找文件的路径 find命令详解 xargs zip,unzip命令 gzip和gunzip命令 bzip2.bunzip2命令 xz.unxz命令 tar归档命令压缩 ...

  9. exec 和 call 用法详解

    http://www.111cn.net/database/Oracle/39433.htm exec 和 call 用法详解 exec 和 call 执行一个procedure时, declare ...

最新文章

  1. css3绘制环形_HTML5 + CSS3 gt;gt;gt; 015
  2. 基于DDD的.NET开发框架 - ABP初探
  3. 反思沟通交流对象:与善人居 不明着懒 更不暗着懒
  4. 【word基础知识】在word指定页开始设置页码/页眉
  5. jar命令更新jar中的class文件
  6. 如何通过 Shell 监控异常等待事件和活跃会话
  7. 在ant中将依赖jar包一并打包的方法
  8. 计算机系统管理程序,计算机系统管理操作程序
  9. CSS学习笔记 | CSS复合选择器
  10. 51cto的火星语。
  11. 爱上源码,重学Spring IoC深入
  12. 表格自适应 css,css 表格自适应一些方法总结
  13. 需求调研前的准备工作
  14. iOS 屏幕尺寸、分辨率、适配
  15. 隧道施工人员ZigBee精确定位系统
  16. 基于MT6572/32平台 Android 版本驱动移植日志
  17. 跟我学XML (01)全网最简洁XML教程
  18. 第五届信息科学、电气与自动化工程国际学术会议(ISEAE 2023)
  19. SEO关键词工具推荐
  20. Adaptive Hash Index(自适应hash索引)

热门文章

  1. c语言中typeof关键字
  2. 交换二叉树中所有结点的左右子树的位置
  3. Gym 101147J Whistle's New Car(dfs)
  4. Ant学习---第二节:Ant添加文件夹和文件夹集的使用
  5. 根据业务情况对数据校验
  6. Hibernate的核心组件简单介绍
  7. springboot 自定义注解开发
  8. python文件例题_文件操作练习题
  9. ping 命令_命令PING背后发生了什么,记得Windows XP拒绝利用PING命令通信吗
  10. newsinglethreadexecutor使用场景_Java线程池的四种用法与使用场景