zoukankan      html  css  js  c++  java
  • linux 命令 — xargs

    xargs

    xargs能接收stdin并将其转化为特定命令的命令行参数,构建单行命令的重要工具
    command | xargs

    指定分隔符

    echo "splitXsplitXsplitXsplit" | xargs -d X
    使用"X"作为分隔符分割字符串并单行输出

    指定每行输出参数个数

    echo "splitXsplitXsplitXsplit" | xargs -d X -n 2
    使用"X"分割字符串并每行输出两个参数,每行两个参数之间使用空格隔开

    读取stdin,将格式化参数传递给命令

    cat dir_name.txt | xargs -I {} ls {}
    将dir_name.txt的文件名称作为参数传递给ls,"{}"会被从stdin读取的参数代替,用来指定xargs参数放在后面命令中的位置(因为xargs命令默认是把参数放在后面命令的最后的),也可以使用其他特殊字符代替,例如"@"

    结合find使用xargs

    find . -type f -name "*.txt -print0" | xargs rm -f
    删除当前目录下txt文件(包括文件名中包含空格的txt文件,因为无法判断find输出的风分隔符是" "还是" ",而有些文件名是包含空格的,有可能误删文件名包含空格的文件)

    统计源代码目录中所有C程序的行数

    find source_code_dir -type f -name "*.c" -print0 | xargs -0 wc -l

    结合stdin,巧妙使用whileUI局和子shell

    使用xargs不能将参数传递给多个命令,但是巧妙使用子shell可以实现
    cat files.txt | ( while read arg; do cat $arg; done )
    等同于
    cat files.txt | xargs -I {} cat {}
    但是在上面第一种方法中可以在子shell(使用"()"包括起来的部分)内执行多个命令

  • 相关阅读:
    用户使用调查报告
    Beta阶段敏捷冲刺五
    Beta阶段敏捷冲刺四
    Beta阶段敏捷冲刺三
    Beta阶段敏捷冲刺二
    Beta阶段敏捷冲刺一
    软工网络15团队作业8——Beta阶段敏捷冲刺
    Beta阶段Scrum 冲刺博客合集
    软工网络15Alpha阶段敏捷冲刺博客集合
    项目复审——Beta阶段
  • 原文地址:https://www.cnblogs.com/sunshine-2015/p/6799423.html
Copyright © 2011-2022 走看看