xargs与exec区别
平时使用find命令查找出文件的时候有时候后面有时候用-exec有时候用管道加xargs,这2个到底有什么不同?下面就这2个的不同做简单介绍。
零、实验环境
[root@osker /]# find /root/ -type f -name '*.txt'
/root/.txt
/root/.txt
/root/.tx
一、xargs的使用
(1)将前一个命令的标准输出传递给下一个命令,作为它的参数,xargs的默认命令是echo,空格是默认定界符
(2)将多行输入转换为单行
[root@osker /]# find /root/ -type f -name '*.txt'|xargs
/root/.txt /root/.txt /root/.txt
[root@osker /]# find /root/ -type f -name '*.txt'|xargs echo start
start /root/.txt /root/.txt /root/.txt
###-i:逐项处理,默认以空格为分隔符;{}表示前面传过来的结果。
[root@osker /]# find /root/ -type f -name '*.txt'|xargs -i mv {} {}.bak
[root@osker /]# ll /root/
total
-rw-r--r--. root root Apr : .txt.bak
-rw-r--r--. root root Apr : .txt.bak
-rw-r--r--. root root Apr : .txt.bak ###-n: 指定一次处理的参数个数
[root@osker /]# find /root/ -type f -name '*.bak'|xargs -n
/root/.txt.bak /root/.txt.bak
/root/.txt.bak
注意:处理特殊文件名需要采用-0来避免特殊字符(xargs -0 )
二、exec的使用
exec参数是一个一个传递的,传递一个参数执行一次命令。
-exec 命令 {} \;
“{}”表示命令的参数即为所找到的文件;以“;”表示命令的结束,“\”是转义符,因为分号在命令中还有它用途,所以就用一个\来限定表示这是一个分号而不是表示其它意思。
PS:-ok和-exec的作用相同,格式也一样,只不过以一种更为安全的模式来执行该参数,在给出的shell运行这个命令之前,都会给出提示,让用户来确定是否执行。
[root@osker /]# find /root/ -type f -name '*.bak' -ok echo start {} \;
< echo ... /root/.txt.bak > ? y
start /root/.txt.bak
< echo ... /root/.txt.bak > ? y
start /root/.txt.bak
< echo ... /root/.txt.bak > ? y
start /root/.txt.bak
[root@osker /]# find /root/ -type f -name '*.txt' -exec echo start {} \;
start /root/.txt
start /root/.txt
start /root/.txt
该处理过程为:find命令查找到第一个文件传给echo处理,然后将查找到的第二个文件传给echo处理....
三、2个命令在处理的流程上不一样所以在处理效率上也不同
[root@nfs ~]# touch {..}.txt
[root@nfs ~]# time find ./ -type f -name '*.txt' |xargs rm -f
real 0m0.203s
user 0m0.016s
sys 0m0.186s
[root@nfs ~]# touch {..}.txt
[root@nfs ~]# time find ./ -type f -name '*.txt' -exec rm {} \;
real 0m8.074s
user 0m3.717s
sys 0m4.294s
可以看到xargs在处理大量文件上时间比exec短。
总结:xargs一次将参数传给命令,可以使用-n控制参数个数;exec参数是一个一个传递的,传递一个参数执行一次命令。
xargs与exec区别的更多相关文章
- xargs、管道、exec区别
作者:ilexwg链接:https://www.zhihu.com/question/27452459/answer/170834758来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转 ...
- Oracle中执行存储过程call和exec区别
Oracle中执行存储过程call和exec区别 在sqlplus中这两种方法都可以使用: exec pro_name(参数1..); call pro_name(参数1..); 区别: 1. 但是e ...
- linux中exec和xargs命令的区别和优劣分析
find的exec及ok命令 exec命令的格式为: exec command {} \; exec后面跟着的是操作命令,然后跟着{}表示每一个参数,然后空格,然后"\;".{}之 ...
- xargs与exec详解
一.场景 这个命令是错误的 1 find ./ -perm +700 |ls -l 这样才是正确的 1 find ./ -perm +700 |xargs ls -l 二.用法 1 2 3 4 5 ...
- 2.7 xargs和exec详解【转】
本文转载自:http://ask.apelearn.com/question/13323 常用在查找中exec主要是和find一起配合使用,而xargs就要比exec用的地方要多了. exec 应用 ...
- 正则表达式中test,match,exec区别
testtest 返回 Boolean,查找对应的字符串中是否存在模式.var str = "1a1b1c";var reg = new RegExp("1." ...
- query和exec区别
1.PDO::query PDO::query执行一条SQL语句,如果通过,则返回一个PDOStatement对象.PDO::query函数有个“非常好处”,就是可以直接遍历这个返回的记录集. 示例如 ...
- find只查当前目录 和 -exec和xargs区别
1.find默认查找当前目录和子目录,通过maxdepth限制只查当前目录: find . -maxdepth 1 -type f -name "*.php" 2. find . ...
- find -exec 与xargs 区别
find . -name "*.txt" -exec rm {} \;find . -name "*.txt" | xargs rm {} -exec 1 ...
随机推荐
- Ext.grid 分页
1. 定义变量,存储,每页显示多少条数据 var itemsPage = 25; 2.grid数据源 //列表源 var oStore = Ext.create('Ext.data.Store', { ...
- Java锁的深度化--重入锁、读写锁、乐观锁、悲观锁
Java锁 锁一般来说用作资源控制,限制资源访问,防止在并发环境下造成数据错误 锁作为并发共享数据,保证一致性的工具,在JAVA平台有多种实现(如 synchronized(重量级) 和 Reentr ...
- Oracle 中文日期转换
中文日期转换 select to_char(to_date('07-5月-17'),'yyyy-MM-dd HH24:mi:ss') from dual
- Consider defining a bean named 'authenticator' in your configuration.
SpringBoot整合Shiro时出错: 异常日志: o.s.b.d.LoggingFailureAnalysisReporter: *************************** APPL ...
- 两片74门实现的双边沿D触发器
最近一个项目需要时钟上升沿和下降沿都可以触发的D触发器,但并没有找到符合要求的商品IC.也去看了一些文献,但都是给的示意图然后用分立元件实现的(应该是准备做成IC).这里给出一种最少2个IC就能搭出来 ...
- Linux Namespace 入门系列:Namespace API
Linux Namespace 是 Linux 提供的一种内核级别环境隔离的方法.用官方的话来说,Linux Namespace 将全局系统资源封装在一个抽象中,从而使 namespace 内的进程认 ...
- Javascript之盒子拖拽(跟随鼠标、边界限定、轨迹回放)
本文通过拖拽案例,实现"跟随鼠标.边界限定.轨迹回放"三大效果: 完整代码中有详尽注释,故不再进行细致讲解: 对于案例中需要注意的重点或易错点问题,会总结在最后. 效果图(仅演示左 ...
- 图像配准:从SIFT到深度学习
图像配准(Image Registration)是计算机视觉中的基本步骤.在本文中,我们首先介绍基于OpenCV的方法,然后介绍深度学习的方法. 什么是图像配准 图像配准就是找到一幅图像像素到另一 ...
- 【原创】Linux select/poll机制原理分析
前言 Read the fucking source code! --By 鲁迅 A picture is worth a thousand words. --By 高尔基 1. 概述 Linux系统 ...
- 【SQL SERVER】索引
在做开发过程中经常会接触数据库索引,不只是DBA才需要知道索引知识,了解索引可以让我们写出更高质量代码. 索引概述 聚集索引 非聚集索引 唯一索引 筛选索引 非聚集索引包含列 索引概述 索引的存在主要 ...