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 ...
随机推荐
- 【Weiss】【第03章】练习3.9:大整数运算包
[练习3.9] 编写任意精度的整数运算包,要求使用类似多项式运算的方法.计算24000内数字0到9的分布.
- MySQL:REPLACE函数的使用
原文链接 REPLACE函数功能 REPLACE(columnName, search_str, replace_str) 查找columnName字段中所有search_str,并替换为replac ...
- 全文搜索技术--solr7.1之mysql的安装步骤
1.安装命令 #>在线安装wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm 输完上面一句话不能正常的下载安装 ...
- 写爬虫爬了3w条职位数据,看看当前招聘形势 | 开源
最近有不少程序员又开始找工作了,为了了解目前技术类各职位的数量.薪资.招聘公司.岗位职责及要求,我爬取了拉勾网北上广深4个城市的招聘数据,共3w条.职位包括:人工智能(AI).大数据.数据分析.后端( ...
- spring-cloud-gateway过滤器实践
概述 这里是 SpringCloud Gateway 实践的第一篇,主要讲过滤器的相关实现.Spring-Cloud-Gateway 是以 WebFlux 为基础的响应式架构设计, 是异步非阻塞式的, ...
- HDU 1754 I hate it 树状数组维护区间最大值
Problem Description 很多学校流行一种比较的习惯.老师们很喜欢询问,从某某到某某当中,分数最高的是多少.这让很多学生很反感. 不管你喜不喜欢,现在需要你做的是,就是按照老师的要求,写 ...
- TensorFlow-Bitcoin-Robot:一个基于 TensorFlow LSTM 模型的 Bitcoin 价格预测机器人。
简介 TensorFlow-Bitcoin-Robot:一个基于 TensorFlow LSTM 模型的 Bitcoin 价格预测机器人. 文章包括一下几个部分: 1.为什么要尝试做这个项目? 2.为 ...
- 优化Python代码的4种方法
介绍 作为数据科学家,编写优化的Python代码非常非常重要.杂乱,效率低下的代码即浪费你的时间甚至浪费你项目的钱.经验丰富的数据科学家和专业人员都知道,当我们与客户合作时,杂乱的代码是不可接受的. ...
- TensorFlow系列专题(三):深度学习简介
一.深度学习的发展历程 深度学习的起源阶段 深度学习的发展阶段 深度学习的爆发阶段 二.深度学习的应用 自然语言处理 语音识别与合成 图像领域 三.参考文献 一.深度学习的发展历程 作为机器学习最 ...
- SpringCloud服务的注册发现--------consul实现服务与发现
1,consul也可以替代Eureka实现注册和发现的功能,即注册中心. 之前在linux环境通过consul + upsync + nginx 实现nginx 的动态负载均衡 https://www ...