xargs命令的使用过程中一个小领悟:管道与xargs的差别
对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的差别的更多相关文章
- ESXi与物理交换机静态链路聚合配置过程中的小陷阱
作者:陆斌文章来自微信公众号:平台人生 内容简介:ESXi与物理交换机之间配置静态链路聚合时,因为静态链路聚合的特点,在进行down网卡和从虚拟交换机移除网卡的操作时,可能会无法完成故障流量切换,影响 ...
- 关于HTML中,绝对定位,相对定位的理解...(学习HTML过程中的小记录)
关于HTML中,绝对定位,相对定位的理解...(学习HTML过程中的小记录) 作者:王可利(Star·星星) HTML中 相对定位:position:relative; 绝对定位:position ...
- 利用JQ实现的,高仿 彩虹岛官网导航栏(学习HTML过程中的小记录)
利用JQ实现的,高仿 彩虹岛官网导航栏(学习HTML过程中的小记录) 作者:王可利(Star·星星) 总结: 今天学习的jQ类库的使用,代码重复的比较多需要完善.严格区分大小写,在 $(" ...
- html/css 盒子布局 Margin 、Padding 、border 以及 清除浮动的知识 (学习HTML过程中的小记录)
html/css 盒子布局 Margin .Padding .border 以及 清除浮动的知识 (学习HTML过程中的小记录) 作者:王可利(Star·星星) width 是"宽 ...
- 关于 JavaScript 中一个小细节问题 (在控制台中直接 {Name:'王尼玛',Age:20} 对象报错问题)
在 Chrome 浏览器,大家可能遇到这样一个小问题. 随便输入一个 Object 对象 ,比如 {Name:'王尼玛',Age:20} ,将会报错.之前,也从来没去考虑过到底是为啥原因. 今天,刚 ...
- dubbo debug过程中一个有趣的问题
最近在debug dubbo代码过程中遇到的很有趣的问题 我们都知道dubbo ReferenceBean是消费者的spring bean包装,为了查一个consumer端的问题,在Reference ...
- 继《关于讯飞语音SDK开发学习》之打包过程中遇到小问题
关于讯飞语音SDK开发学习 使用vs自带打包,具体怎么操作就不说了,网上关于这方面的资料挺多的.例如:winform 打包部署,VS2010程序打包操作(超详细的),关键是桌面上创建快捷方式中的&qu ...
- stm8 停机模式与外部中断唤醒中一个小问题
做了一个简单的项目,电路板使用电池供电,需要系统在待机时低功耗.而对外接口只有4个按键,也就是唤醒必须要通过这四个按键. 系统功能就不介绍了,只给出进入低功耗的代码和退出低功耗的代码. 使用芯片为st ...
- 第三方开源动画库EasyAnimation中一个小bug的修复
看过iOS动画之旅的都知道,其中在最后提到一个作者写的开源动画库EasyAnimation(以下简称EA). EA对CoreAnimation中的view和layer动画做了更高层次的包装和抽象,使得 ...
随机推荐
- IE浏览器兼容问题(下)——IE6的常见问题
IE6常见兼容性问题 1.盒模型问题 (1)DTD问题 DTD:文档定义类型,规定了要遵循的书写规范. 如果不写DTD,高级浏览器还是可以正常加载,IE6会以怪异模式进行加载. 盒模型:正常应该是外扩 ...
- assert 的使用
一直以来没分清什么时候该使用assert,什么时候该使用if.现在将其记录下来 assert 用于检查参数的合法性以及某个预期的结果等,assert只在debug模式中在在.assert是面向程序员的 ...
- CentOS 6 网络yum源配置
# CentOS-Base.repo## The mirror system uses the connecting IP address of the client and the# update ...
- htm5 手机自适应问题 文本框被激活(获取焦点)时,页面会放大至原来尺寸。
加上这句话就ok啦 <meta name="viewport" content="width=device-width, initial-scale=1.0, mi ...
- plus.webview.create mui.openWindow区别是什么呢
create 只是创建这个webview,但是不显示,而且同一个页面.同一个id你甚至能重复创建多个(严重消耗性能,作死...),其实mui里面已经封装了这个方法 mui.preload(),并且 ...
- (fields.E130) DecimalFields must define a 'decimal_places' attribute.
DecimalField类型:固定精度的十进制数,一般用来存金额相关的数据.额外的参数包括DecimalField.max_digits(整个数字的长度)和DecimalField.decimal_p ...
- pycharm 设置字体大写和显示代码行号
打开pycharm,我们看到左边是没有行号显示的. 在工具栏中点击扳手的标志,打开. 找到 Ide-setting ——>Editor ——>Apperance ——> ...
- 获取Spring管理的Bean
1.再Spring配置文件中配置工具类 <!-- 用于持有ApplicationContext,可以使用SpringContextHolder.getBean('xxxx')的静态方法得到spr ...
- UVa 1625 - Color Length(线性DP + 滚动数组)
链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- 机器学习之感知器算法原理和Python实现
(1)感知器模型 感知器模型包含多个输入节点:X0-Xn,权重矩阵W0-Wn(其中X0和W0代表的偏置因子,一般X0=1,图中X0处应该是Xn)一个输出节点O,激活函数是sign函数. (2)感知器学 ...