对xargs的使用总是比较模糊,大概的理解为:通道中,上一个命令的标准输出逐行作为下一个命令的参数

例如 find /var/temp* | xargs rm -r

功效:找出/var/中所有temp开头的文件和文件夹,再用rm逐行删除

(因为rm不支持管道,因此只能用xargs使find的结果逐行作为rm的参数)

假设:

<span style="font-size:18px;">$ find /var/temp*
$ /var/temp1
/var/temp2</span>

此时,再用xargs rm -r 等效于

<span style="font-size:18px;">$ rm -r /var/temp1
rm -r /var/temp2</span>

============================分割===================================

那么,管道与xargs有什么差别呢?

这是我在使用linux过程中的一个例子。

(find与grep都是支持管道的命令)

<span style="font-size:18px;">#找出/usr/shar/doc中bash-开头的所有文件,结果如下(展开说明前的环境铺垫)
[GMPY@14:44 ~]$find /usr/share/doc/bash-* -type f
/usr/share/doc/bash-completion/AUTHORS
/usr/share/doc/bash-completion/CHANGES.package.old
/usr/share/doc/bash-completion/bash_completion.txt
/usr/share/doc/bash-completion/README
/usr/share/doc/bash-completion/CHANGES
[GMPY@14:45 ~]$
</span>

大家再对比下下面有xargs与无xargs的结果差别

有xargs时的过滤:

<span style="font-size:18px;">[GMPY@14:49 ~]$find /usr/share/doc/bash-* -type f| xargs grep -Ew "README"
/usr/share/doc/bash-completion/bash_completion.txt: also README.
/usr/share/doc/bash-completion/CHANGES: * Fix bash_completion paths in README (Debian: #647941)
/usr/share/doc/bash-completion/CHANGES: * README updated: explain how to use bash-completion correctly.
[GMPY@14:49 ~]$</span>

无xargs时的过滤:

</pre><pre name="code" class="cpp">
<span style="font-size:18px;">[GMPY@14:49 ~]$find /usr/share/doc/bash-* -type f| grep -Ew "README"
/usr/share/doc/bash-completion/README
[GMPY@14:53 ~]$
</span>

结果是不同的,为什么呢?

1、无xargs时是使用管道(虽然严格来说有xargs也是管道,这里为了区分暂时这么称呼),即把find命令的标准输出作为grep的检索内容,等效于:find的结果作为一个“字符串”被grep检索

<span style="font-size:18px;">$ grep -Ew "README" </span>
<span style="font-size:18px;">"/usr/share/doc/bash-completion/AUTHORS
/usr/share/doc/bash-completion/CHANGES.package.old
/usr/share/doc/bash-completion/bash_completion.txt
/usr/share/doc/bash-completion/README
/usr/share/doc/bash-completion/CHANGES"</span>

2、有xargs时,则等效于检索find命令找到的每一个文件

<span style="font-size:18px;">$ grep -Ew "README" /usr/share/doc/bash-completion/AUTHORS
$ grep -Ew "README" /usr/share/doc/bash-completion/CHANGES.package.old
$ grep -Ew "README" /usr/share/doc/bash-completion/bash_completion.txt
$ grep -Ew "README" /usr/share/doc/bash-completion/README
$ grep -Ew "README" /usr/share/doc/bash-completion/CHANGES</span>

xargs命令的使用过程中一个小领悟:管道与xargs的差别的更多相关文章

  1. ESXi与物理交换机静态链路聚合配置过程中的小陷阱

    作者:陆斌文章来自微信公众号:平台人生 内容简介:ESXi与物理交换机之间配置静态链路聚合时,因为静态链路聚合的特点,在进行down网卡和从虚拟交换机移除网卡的操作时,可能会无法完成故障流量切换,影响 ...

  2. 关于HTML中,绝对定位,相对定位的理解...(学习HTML过程中的小记录)

    关于HTML中,绝对定位,相对定位的理解...(学习HTML过程中的小记录)   作者:王可利(Star·星星) HTML中 相对定位:position:relative; 绝对定位:position ...

  3. 利用JQ实现的,高仿 彩虹岛官网导航栏(学习HTML过程中的小记录)

    利用JQ实现的,高仿 彩虹岛官网导航栏(学习HTML过程中的小记录)   作者:王可利(Star·星星) 总结: 今天学习的jQ类库的使用,代码重复的比较多需要完善.严格区分大小写,在 $(" ...

  4. html/css 盒子布局 Margin 、Padding 、border 以及 清除浮动的知识 (学习HTML过程中的小记录)

    html/css  盒子布局 Margin .Padding .border 以及 清除浮动的知识 (学习HTML过程中的小记录) 作者:王可利(Star·星星) width     是"宽 ...

  5. 关于 JavaScript 中一个小细节问题 (在控制台中直接 {Name:'王尼玛',Age:20} 对象报错问题)

    在 Chrome 浏览器,大家可能遇到这样一个小问题. 随便输入一个 Object 对象  ,比如 {Name:'王尼玛',Age:20} ,将会报错.之前,也从来没去考虑过到底是为啥原因. 今天,刚 ...

  6. dubbo debug过程中一个有趣的问题

    最近在debug dubbo代码过程中遇到的很有趣的问题 我们都知道dubbo ReferenceBean是消费者的spring bean包装,为了查一个consumer端的问题,在Reference ...

  7. 继《关于讯飞语音SDK开发学习》之打包过程中遇到小问题

    关于讯飞语音SDK开发学习 使用vs自带打包,具体怎么操作就不说了,网上关于这方面的资料挺多的.例如:winform 打包部署,VS2010程序打包操作(超详细的),关键是桌面上创建快捷方式中的&qu ...

  8. stm8 停机模式与外部中断唤醒中一个小问题

    做了一个简单的项目,电路板使用电池供电,需要系统在待机时低功耗.而对外接口只有4个按键,也就是唤醒必须要通过这四个按键. 系统功能就不介绍了,只给出进入低功耗的代码和退出低功耗的代码. 使用芯片为st ...

  9. 第三方开源动画库EasyAnimation中一个小bug的修复

    看过iOS动画之旅的都知道,其中在最后提到一个作者写的开源动画库EasyAnimation(以下简称EA). EA对CoreAnimation中的view和layer动画做了更高层次的包装和抽象,使得 ...

随机推荐

  1. msvcr100.dll丢失原因及解决方法

    msvcr100.dll为Visual Studio 2010的一个动态链接库,如果某程序是用它开发出来的,那么该程序的运行就有可能需要此动态链接库.有些程序直接将其打包到了安装目录,并注册,就不会出 ...

  2. zend studio 破解、汉化和字体颜色及快捷键相关设置

    下载:http://www.geekso.com/component/zendstudio-downloads/ 破解:http://www.geekso.com/ZendStudio9-key/ 注 ...

  3. mongodb 副本集+分片集群搭建

    数据分片节点#192.168.114.26mongod --shardsvr --replSet rsguo --port 2011 --dbpath=/data/mongodb/guo --logp ...

  4. Java使用iText生成word文件的完美解决方案(亲测可行)

    JAVA生成WORD文件的方法目前有以下种: 一种是jacob 但是局限于windows平台 往往许多JAVA程序运行于其他操作系统 在此不讨论该方案 一种是pio但是他的excel处理很程序 wor ...

  5. 树莓派(Raspberry Pi)上手小记

    引言 本日志中有不少软广告,博主并没有收他们任何好处,完全是给想入手的小伙伴们指条路而已.不喜勿看,不喜勿闻,不喜勿喷. 介绍 之前两三个月突然听说了这么个东西,也没有留意,某天突然在一个微信公众号上 ...

  6. android开发者您还在为模拟器犯愁吗?神级android模拟器---Genymotion一个更快、接近完美的模拟器……

    摘要:Android系统非常特别,App须要进行模拟化測试.即使这样仍然有解决的办法---虚拟化技术. 之前的模拟器比方eclipse自带的是非常慢的一种,并且模拟器的版本号并非最新的.开机.能够说差 ...

  7. UVA151 Power Crisis

    嘟嘟嘟 这道题被评为紫题完全是在假(虽然我也跟风评了紫题),顶多黄题难度. 评黄题的主要原因是得知道约瑟夫递推公式,即fn = (fn - 1 +m) % n.表示n个人报数最后的获胜者,需要注意的是 ...

  8. pcel安装的mongodb的两个问题的解决方案

    最近工作需要,要使用mongodb,这个是使用 pecl 安装的,跟标准的 mongo 使用还是有区别的,这里不讲区别,只讲两个比较典型的问题该如何处理,具体的文档大家可以直接参考 php 的官方文档 ...

  9. 身份认证系统(三)什么是OAuth2

    本文准备用最简单的语言告诉大家什么是OAuth2 ,OAuth2是干什么的. 我们有一个资源服务器,资源服务器中有一系列的用户数据. 现在有一个应用想想要获取我们的用户数据. 那么最简单的方法就是我们 ...

  10. iOS-WebView(WKWebView)进度条

    一直以来,就有想通过技术博客来记录总结下自己工作中碰到的问题的想法,这个想法拖了好久今天才开始着手写自己的第一篇技术博客,由于刚开始写,不免会出现不对的地方,希望各位看到的大牛多多指教.好了,不多说了 ...