• Linux命令-xargs


    比如一个例子

    echo "README.md" |cat

    echo "README.md" |xargs cat

    第一个例子只是输出了README.md的文件名,而后面那个命令就把文件内容都输出到终端

    事实上,xargs可以把从STDIN接收的输入,用空格隔开,然后依次作为参数去调用xargs后面的命令

    比如,假如我们要删除当前目录下的pdf文件,

    find .  -name "*.pdf" |xargs  rm

    看上去没有什么问题,但是假如文件中带有空格那么就有问题了。

    解决:

    find  . –name  "*.pdf"  -print0 |xargs  –0  rm

    这里-print0告诉find在每个输出后面以''结尾,-0告诉xargs用''分隔,而不是空格。当然用户可以根据自己的意愿将''换成自己想要的分隔符

    如果要批量修改所有pdf文件的后缀名

    find  . –name  "*.pdf"  -print0 |xargs  –0  -I {}  mv  {}  {}.doc

    -I {}是告诉xargs后面的命令中用{}表示占位符,将会被指定的参数替代。也可以将换成i

    更多参数说明:

    -p(小写):操作具有可交互性,每次执行command都交互式提示用户选择

    -P(大写):修改最大进程数

    -t:先打印命令,再执行后面的命令

    比如:

    $ date|xargs -t echo "xargs"
    echo xargs 2017年03月 6日 20:07:36
    xargs 2017年03月 6日 20:07:36

    -a:从文件中读入作为标准输入

    -e、-E:作为一个标志位,xargs分析到这个标志位后停止

    -r:假如在|xargs前面没有传入参数,那么就停止xargs,直接退出

    -n:只限制参数的个数,默认无

    -d:设置分隔符,xargs默认的是回车,参数默认的是空格,这个参数修改xargs的

    -s:设置每次构造命令(xargs后面的命令)的长度

    -x:主要配合-s使用,如果满足了条件之后退出

    -l、-L:从标准输入中一次读取n行传递给命令

    比如:

    $cat  file

    a

    b

    c

    $cat file |xargs –L 2 echo

    a

    b

    参考:http://blog.csdn.net/yhcharles/article/details/44875865

  • 相关阅读:
    c/c++字符串传递
    从一个小程序明白new和delete的奇特现象
    Linux下构造函数string需要注意的问题
    字符串转time_t
    CentOS7基础建站指南(笔记)
    图与搜索
    面向的对象编程的小猫腻
    多线程编程
    生产者消费者模式-Java实现
    Java-代理模式的理解
  • 原文地址:https://www.cnblogs.com/simonid/p/6511840.html
Copyright © 2020-2023  润新知