博客
关于我
shell之xargs与-exec与管道的区别你造吗?
阅读量:665 次
发布时间:2019-03-15

本文共 1051 字,大约阅读时间需要 3 分钟。

xargs的作用

(1)将前一个命令的标准输出传递给下一个命令,作为它的参数,xargs默认命令是echo,空格是默认定界符
(2)将多行输入转换为单行

使用模式

front command | xargs -option latercommand
front command:前一个命令

  • option:xargs的选项
    later command:后一个命令
    一般与管道“|”结合使用

xargs常用选项

-n:指定一次处理的参数个数
-d:自定义参数界定符
-p:询问是否运行later command参数
-t:表示先打印命令,然后再执行
-i:逐项处理
...更多参数查看man xargs

xargs与管道|的区别

管道“|”用来将前一个命令的标准输出传递到下一个命令的标准输入。
xargs将前一个命令的标准输出传递给下一个命令,作为它的参数。
个人理解,命令参数就是直接跟在命令后面的,而标准输入可以是键盘、文件等。
管道传递的是输入框中的内容,而xargs是直接将结果传递给命令作为参数。
因此,加上xargs后,管道前面的结果会直接传递给后面的命令作为参数。

xargs与-exec的区别

-exec:{}表示命令的参数即为所找到的文件,以;表示命令的结束,\用于限定分号作为命令结束符。
-ok:类似于-exec,只是更安全,不会直接执行参数。

xargs将参数一次传递给echo,执行:echo begin ./xargs.txt ./args.txt

find . -name '*.txt' -type f | xargs echo begin

exec一次传递一个参数,执行:echo begin ./xargs.txt;echo begin ./args.txt

find . -name '*.txt' -type f -exec echo begin {} ;

xargs需要结合管道使用,格式为:find [option] expression |xargs command

exec每处理一个文件都要启动命令,效率低,且需要使用{}和;
对于空格文件名,find | xargs会有问题,而exec不会有这个问题。

总结:

  • exec效率低,每处理一个文件都要启动命令
  • exec麻烦,需要用{}和;
  • xargs不支持空格文件名
  • exec支持空格文件名
  • xargs一次处理多个文件较方便
    各选适合:如果需要一次处理多个文件且文件名无空格,选xargs;否则选exec。
  • 转载地址:http://ybxmz.baihongyu.com/

    你可能感兴趣的文章
    Oracle流程控制语句
    查看>>
    oracle深度解析检查点
    查看>>
    Oracle游标
    查看>>
    oracle游标数最大数,Oracle 最大连接数 最大游标数
    查看>>
    oracle用户改名
    查看>>
    oracle用户解压不了,PLSQL developer 连接不上64位Oracle 的解决方法
    查看>>
    oracle用户解锁
    查看>>
    Oracle用游标删除重复数据
    查看>>
    Tomcat学习总结(19)—— 为什么首选Tomcat作为JavaWeb应用服务器?
    查看>>
    oracle的内置函数
    查看>>
    Oracle的存储结构
    查看>>
    Oracle的聚合函数group by结合CUBE和ROLLUP的使用
    查看>>
    Oracle监听配置、数据库实例配置等
    查看>>
    Oracle知识补充
    查看>>
    Oracle笔记(十三) 视图、同义词、索引
    查看>>
    Oracle笔记(十) 约束
    查看>>
    【BOOST C++字串专题07】 Boost.Format
    查看>>
    oracle系列(六)OEM与常见故障处理
    查看>>
    Oracle系列:安装Oracle RAC数据库(二)
    查看>>
    oracle系统 介绍,ORACLE数据库管理系统介绍
    查看>>