• Linux


    xargs命令:

    xargs命令是给其他命令传递参数的一个过滤器,也是组合多个命令的一个工具。

    1、它擅长将标准输入数据转换成命令行参数,xargs能够处理管道或者stdin并将其转换成特定命令的命令参数。

    2、xargs也可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行。

    3、xargs的默认命令是echo,空格是默认定界符。这意味着通过管道传递给xargs的输入将会包含换行和空白,不过通过xargs处理,换行和空白将被空格取代。

    4、xargs是构建单行命令的重要组件之一。

    用法:

    1、xargs用作替换工具,读取输入的数据再重新格式化后输出(-n   -d)。

      定义一个测试文件(多行文本数据):

    cat test.txt
    
    a b c d e f g
    h i j k l m n
    o p q
    r s t
    u v w x y z
    

      单行输出:

    cat test.txt | xargs
    
    a b c d e f g h i j k l m n o p q r s t u v w x y z
    

      -n 选项控制多行输出;-d 选项可自定义定界符/分割符:

    echo "nameXnameXnameXname" | xargs -dX -n2
    
    name name
    name name      //以 X 分割,以每行 2 个元素输出
    

      

    2、读取stdin,并将格式化后的参数传递给命令( -I )。

      假设有一个命令为sk.sh 和 一个保存参数的文件arg.txt:

    echo $*     //sk.sh命令内容:打印出所有参数
    
    cat arg.txt //arg.txt文件内容如下
    
    aaa
    bbb
    ccc
    

      -I 选项,使用 -I 指定一个 要被替换的字符串{},在xargs扩展时该字符串会被替换(备注:当 -I 和 xargs 结合使用时每个参数命令都会被执行一次):

    cat arg.txt | xargs -I {} ./sk.sh -p {} -l
    
    -p aaa -l
    -p bbb -l
    -p ccc -l
    

      例:复制所有图片文件到 /data/images 目录下:

    ls *.jpg | xargs -n1 -I {} cp {} /data/images
    

    3、xargs 结合 find 使用

      用 rm 删除太多文件时,可能得到一个错误信息:/bin/rm Argument list too long.

      用 xargs 去避免这个问题(xargs -0 将 作为定界符):

    find . -type f -name "*.log" -print0 | xargs -0 rm -f
    

      查找所有的 jpg 文件,并全部压缩:

    find . -type f -name "*.jpg" -print | xargs tar -czvf images.tar.gz
    

    4、xargs 其他应用

      假如有一个文件包含很多需要下载的URL,则可以:

    cat url-list.txt | xargs wget -c
    

      

    博客园文作者:Citrusliu 博文地址:https://www.cnblogs.com/citrus
  • 相关阅读:
    符合RESTful规范的API
    DRF 认证、权限、限制
    RESTful API终极版序列化封装
    RESTful API
    Django REST Framework
    前端之promise
    VueRouter
    Vue的生命周期
    三种常用的js数组去重方法
    dos命令查看端口状态
  • 原文地址:https://www.cnblogs.com/citrus/p/8297148.html
Copyright © 2020-2023  润新知