博客
关于我
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/

    你可能感兴趣的文章
    Python中使用requests和parsel爬取喜马拉雅电台音频
    查看>>
    Python中使用turtle绘制多个同心圆
    查看>>
    Python中使用turtle绘制棋盘详解
    查看>>
    Python中使用wordcloud生成漂亮的中文词云
    查看>>
    Python中使用wxpy定时机器人给微信好友发送每日一文
    查看>>
    Python中使用zip()并行迭代
    查看>>
    Python中使用推导式创建序列
    查看>>
    Python中信号处理程序和atexit处理程序的调用
    查看>>
    Python中关于txt的简单读写模式与操作
    查看>>
    Python中关于类和函数的初体验之"__init__"和"__str__"不是"_init_"和"_str_"
    查看>>
    python中函数接受参数为*args, **kwargs怎么办
    查看>>
    Python中切片的高效迭代
    查看>>
    python中列表乘法、eval、lambda、hasattr、assert、*(星)等的用法
    查看>>
    Python中制作词云的WordCloud参数详解
    查看>>
    Python中可用和使用的系统内存?
    查看>>
    python中存根文件(.pyi)的用途是什么?
    查看>>
    Python中实现ASCII码与字符相互转换
    查看>>
    Python中实现获取所有微信好友的头像并拼接成一张图片
    查看>>
    Python中对象的布尔值
    查看>>
    python中对集合的操作
    查看>>