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

    你可能感兴趣的文章
    Vue.js 学习总结(12)—— 微前端实践思考与总结
    查看>>
    oldboy.16课
    查看>>
    OLEDB IMEX行数限制的问题
    查看>>
    ollama 如何删除本地模型文件?
    查看>>
    ollama-python-Python快速部署Llama 3等大型语言模型最简单方法
    查看>>
    Ollama怎么启动.gguf 大模型
    查看>>
    ollama本地部署DeepSeek(Window图文说明)
    查看>>
    ollama运行多模态模型如何进行api测试?
    查看>>
    OMG,此神器可一次定一周的外卖
    查看>>
    Omi 多端开发之 - omip 适配 h5 原理揭秘
    查看>>
    On Error GOTO的好处
    查看>>
    onclick事件的基本操作
    查看>>
    oncopy和onpaste
    查看>>
    onCreate中的savedInstanceState作用
    查看>>
    onCreate()方法中的参数Bundle savedInstanceState 的意义用法
    查看>>
    One good websit for c#
    查看>>
    One-Shot学习/一次学习(One-shot learning)
    查看>>
    OneASP 安全公开课,深圳站, Come Here, Feel Safe!
    查看>>
    OneBlog Shiro 反序列化漏洞复现
    查看>>
    oneM2M
    查看>>