• Linux xargs命令解析及递归执行dos2unix命令


    一、xargs 命令的作用

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

    $ echo "hello world" | xargs echo
    hello world
    

    上面的代码将管道左侧的标准输入,转为命令行参数hello world,传给第二个echo命令。

    xargs命令的格式如下。

    $ xargs [-options] [command]
    

    真正执行的命令,紧跟在xargs后面,接受xargs传来的参数。

    xargs的作用在于,大多数命令(比如rm、mkdir、ls)与管道一起使用时,都需要xargs将标准输入转为命令行参数。

    $ echo "one two three" | xargs mkdir
    

    上面的代码等同于mkdir one two three。如果不加xargs就会报错,提示mkdir缺少操作参数。

    二、-0 参数与 find 命令

    由于xargs默认将空格作为分隔符,所以不太适合处理文件名,因为文件名可能包含空格。

    find命令有一个特别的参数-print0,指定输出的文件列表以null分隔。然后,xargs命令的-0参数表示用null当作分隔符。

    $ find /path -type f -print0 | xargs -0 rm
    

    上面命令删除/path路径下的所有文件。由于分隔符是null,所以处理包含空格的文件名,也不会报错。

    还有一个原因,使得xargs特别适合find命令。有些命令(比如rm)一旦参数过多会报错"参数列表过长",而无法执行,改用xargs就没有这个问题,因为它对每个参数执行一次命令。

    $ find . -name "*.txt" | xargs grep "abc"
    

    上面命令找出所有 TXT 文件以后,对每个文件搜索一次是否包含字符串abc。

    三、递归执行dos2unix命令

    查找出所有文件,并使用null分隔文件名,同时对每个文件都执行dos2unix命令

    $ find . -type f -print0 | xargs -0 dos2unix
    
  • 相关阅读:
    Js获取当前日期时间及其它操作
    Java JDBC 基础知识
    java自动创建多级目录
    [Java]读取文件方法大全
    table固定首行(二)
    table固定首行(一)
    DIV滚动条
    查看本机开放的端口号,查看某个端口号是否被占用,查看被占用的端口号被哪个进程所占用,如何结束该进程
    DWZ SSH2 菜单树--使用Struts2 标签(iterator/set/if 组合使用)
    synchronized与lock,哪个效率更高
  • 原文地址:https://www.cnblogs.com/JasonCeng/p/15806834.html
Copyright © 2020-2023  润新知