• Linux输出转换命令 xargs


    一、基本用法

    xargs命令的作用,是将标准输入转为命令行参数

    原因:大多数命令都不接受标准输入作为参数,只能直接在命令行输入参数,这导致无法用管道命令传递参数

    如下面 echo 不接受标准输出做参数,可用 xargs 做转换:

    $ echo "hello world" | xargs echo
    hello world
    
    • 1
    • 2

    二、参数

    -d 指定分隔符

    默认情况下,xargs将换行符和空格作为分隔符,把标准输入分解成一个个命令行参数。

    $ echo "one two three" | xargs mkdir
    
    • 1

    上面代码中,mkdir会新建三个子目录,执行mkdir one two three

    -d参数可以更改分隔符

    $ echo -e "a\tb\tc" | xargs -d "\t" echo
    a b c
    
    • 1
    • 2

    上面的命令指定制表符\t作为分隔符,所以a\tb\tc就转换成了三个命令行参数。echo命令的-e参数表示解释转义字符。

    -p -t打印将要执行的命令

    -p参数打印出要执行的命令,询问用户是否要执行。

    $ echo 'one two three' | xargs -p touch
    touch one two three ?...
    
    • 1
    • 2

    -t参数则是打印出最终要执行的命令,然后直接执行,不需要用户确认。

    $ echo 'one two three' | xargs -t rm
    rm one two three
    
    • 1
    • 2

    -I 传递参数起别名

    如果xargs要将命令行参数传给多个命令,可以使用-I参数。【貌似,会按空格或回车对参数进行分割,然后重复执行命令,而不是当成命令的多个参数】

    -I指定每一项命令行参数的替代字符串。

    $ cat foo.txt
    one
    two
    three
    
    $ cat foo.txt | xargs -I file sh -c 'echo file; mkdir file'
    one 
    two
    three
    
    $ ls 
    one two three
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    上面代码中,foo.txt是一个三行的文本文件。我们希望对每一项命令行参数,执行两个命令(echomkdir),使用-I file表示file是命令行参数的替代字符串。执行命令时,具体的参数会替代掉echo file; mkdir file里面的两个file

    -l -L 指定多少行作为一个命令行参数

    $ echo -e "a\nb\nc" | xargs -L 1 echo
    a
    b
    c
    
    • 1
    • 2
    • 3
    • 4

    -n 指定一行内多项作为一个命令行参数

    $ echo {0..9} | xargs -n 2 echo
    0 1
    2 3
    4 5
    6 7
    8 9
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    --max-procs 多线程执行

    xargs默认只用一个进程执行命令。如果命令要执行多次,必须等上一次执行完,才能执行下一次。

    --max-procs参数指定同时用多少个进程并行执行命令。--max-procs 2表示同时最多使用两个进程,--max-procs 0表示不限制进程数。

    $ docker ps -q | xargs -n 1 --max-procs 0 docker kill
    
    • 1

    上面命令表示,同时关闭尽可能多的 Docker 容器,这样运行速度会快很多

  • 相关阅读:
    C++基础——this指针
    Java反射:探索对象创建与类信息获取
    C#学习相关系列之多线程(七)---Task的相关属性用法
    Java数据结构之哈希表
    Games101-Chapter14-Ray Tracing 2
    22/8/3(板子)树状dp板子+中国剩余定理+求组合数3,4+容斥原理
    三种获取URL参数值的方法
    GIS Office国产基础软件,助力移动通信基础资源管理建设工程
    解决Chrome浏览器和Edeg浏览器主页被篡改的方法
    Android性能优化,可以从那些方面解决?方案一览
  • 原文地址:https://blog.csdn.net/shuofxz/article/details/128045333