find命令把匹配到的文件传递给xargs命令,而xargs命令每次只获取一部分文件而不是全部

xargs要处理的文件如果不是在结尾,需要加上 -i这个参数

xargs常见命令参数

args:xargs的默认命令是echo,空格是默认定界符。  默认替换符号是{}
  

  1. -I {}批定了替换字符串,表示文件内容,能循环按要求替换相应的参数 使用-I指定一个替换字符串{},这个字符串在xargs扩展时会被替换掉,
  2. 当-Ixargs结合使用,每一个参数命令都会被执行一次:
  3. -n num 后面加次数,表示命令在执行的时候一次用的argument的个数,默认是用所有的
  4. -d 自定义定界符

常用的命令展示

多行内容的单输出且每行3个

  1. [root@localhost ftl]# cat /home/omc/ftl/logs.txt |xargs -n3

查找系统中的每一个普通文件,然后使用xargs命令来测试它们分别属于哪类文件

  1. [root@localhost log]# find /home/omc/ -maxdepth 1 -user root -type f | xargs file {}

在/var/log/下查找log文件,复制文件到/home/omc/ftl且把结果保存到/home/omc/ftl/logs.txt文件中

  1. [root@localhost log]# find /var/log/*.log -type f | xargs -i cp {} /home/omc/ftl
  2. [root@localhost log]# ll -ltr /home/omc/ftl
  3. [root@localhost log]# find /var/log/*.log -type f > /home/omc/ftl/logs.txt
  4. [root@localhost log]# ll /home/omc/ftl/logs.txt

删除 /home/omc/ftl/下的log文件

  1. [root@localhost ftl]# ll *.log |xargs rm -rf {} 【错误】
  2. [root@localhost ftl]# ls *.log |xargs rm -rf {} 【正确】

在当前目录下查找所有用户权限644的文件,并更改权限600

  1. [root@localhost ftl]# ll *.txt
  2. [root@localhost ftl]# find /home/omc/ftl -perm 644 | xargs chmod 600
  3. [root@localhost ftl]# ll *.txt

用grep命令在当前目录下的所有普通文件中搜索omc这个词

  1. find /etc/ -name \* -type f |xargs grep "omc" >/tmp/ftl
  2. ==>find /etc/ -name "*" -type f |xargs grep "omc" >/tmp/ftl

使用-i参数默认的前面输出用{}代替,-I参数可以指定其他代替字符,如例子中的[]

find /var/ -name "*.log" |xargs -I [] cp [] /tmp/ 【xargs 默认用是i表示{},用I可以替换符号】

ll -ltr /tmp/ | more 5

xargs的-p参数的使用

find . -name "*.log" |xargs -p -i cp {} ../ltesig/

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

利用for循环实现和xargs同样的效果

  1. find /home/omc/ -name *.txt | xargs -i cp {} /home/omc/h
  2. cat logs.txt |while read line;do echo $line >> logs_bak.txt; done;

利用xargs关闭不常用的系统启动软件

  1. chkconfig | awk '{print $1}' | grep -Ev "sshd|network|crond|sysstat|rsyslog" | xargs -I{} chkconfig {} off

xargs总结示范:

  1. find . -name "*.log" |xargs -p -i cp {} ../ltesig/ 【正确】
  2. find . -name "*.log" |xargs -p cp {} ../ltesig/ 【错误】
  3. find . -type f -print | xargs file 【正确】
  4. find . -type f -print | xargs rm {} 【错误】
  5. 总结一下:如果命令后面可以跟内容,且没有目的路径的时候,可以省略-i,否则得加上

Linux xargs命令详解的更多相关文章

  1. linux xargs 命令详解

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

  2. 【转帖】linux sort,uniq,cut,wc,tr,xargs命令详解

    linux sort,uniq,cut,wc,tr,xargs命令详解 http://embeddedlinux.org.cn/emb-linux/entry-level/201607/21-5550 ...

  3. 【转发】linux yum命令详解

    linux yum命令详解 yum(全 称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器.基於RPM包管理, ...

  4. linux yum 命令 详解

    linux yum命令详解 yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器.基於RPM包管理,能 ...

  5. [转帖]xargs命令详解,xargs与管道的区别

    xargs命令详解,xargs与管道的区别 https://www.cnblogs.com/wangqiguo/p/6464234.html 之前一直说要学习一下 xargs 到现在为止也没学习.. ...

  6. linux awk命令详解

    linux awk命令详解 简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分 ...

  7. linux cat 命令详解

    linux cat 命令详解 http://linux.chinaunix.net/techdoc/system/2007/11/16/972467.shtml adb shell su //这个不一 ...

  8. 【初级】linux rm 命令详解及使用方法实战

    rm:删除命令 前言: windows中的删除命令大家都不陌生,linux中的删除命令和windows中有一个共同特点,那就是危险,前两篇linux mkdir 命令详解及使用方法实战[初级]中我们就 ...

  9. Linux netstat命令详解

    Linux netstat命令详解 一  简介 Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多 ...

随机推荐

  1. springboot-6-整合jdbc

    如果有整合jpa了, 那么在dao中直接, 不需要引入依赖 @Resource private JdbcTempalte jdbcTempalte; 如果没有的话, 就先在pom.xml中加入依赖 & ...

  2. C语言求数组的第二大数

    nt second(int value[],int n) { ]; ]; ; ;i < n;i++) { if(value[i] > first) { second = first; fi ...

  3. 剑指offer63:数据流中的中位数

    题目描述: 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值.如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值. ...

  4. Nodejs学习笔记(十)—与MongoDB的交互(mongodb/node-mongodb-native)、MongoDB入门

    简介 MongoDB 开源,高性能的NoSQL数据库:支持索引.集群.复制和故障转移.各种语言的驱动程序:高伸缩性: NoSQL毕竟还处于发展阶段,也有说它的各种问题的:http://coolshel ...

  5. Velocity学习笔记

    一.为什么要使用velocity? 很多人下载了EasyJWeb的开源应用示例,但是对动态页面模板文件中的标签使用不是很熟悉,这里简单介绍一下.EasyJWeb特定把视图限定为Velocity,因为我 ...

  6. 【起】ACM类下为过往所做过的部分算法题目

    [起]ACM类下为过往所做过的部分算法题目 几百道题,日后细细品味.

  7. Socket编程 - 网络基础知识

    API编程部分:http://www.cnblogs.com/Jimmy1988/p/7895213.html 1. 协议简介 此处,我们主要介绍Linux编程常用的三种协议(TCP/UDP/IP), ...

  8. springboot启动太慢优化

    需求缘起:有人在[springboot]微信公众号问:springboot启动慢的问题何时有个分享就好了,谢谢.粉丝的问题还是要认真的回答的. 我们先看看本节的大纲: (1)组件自动扫描带来的问题(@ ...

  9. 用Shell编写项目发布脚本

    1.首先在github上创建一个测试用的仓库 2.本地编写一个可以运行的测试项目,上传至github 3.链接服务器,编写脚本如下:注意:编写前需要在服务器上安装git和maven 执行build_c ...

  10. 解决升级Nodepad++都会让插件失效

    主要原因是Plugin Manager失效导致的,需要重新导入 导入一下PluginManager就可以了地址:https://github.com/bruderstein/nppPluginMana ...