`
sharp-fcc
  • 浏览: 105489 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

xargs 用法

阅读更多

原博客地址: http://blog.csdn.net/taiyang1987912/article/details/42774517

在使用 find命令的-exec选项处理匹配到的文件时, find命令将所有匹配到的文件一起传递给exec执行。但有些系统对能够传递给exec的命令长度有限制(#getconf ARG_MAX可以获得操作系统允许的最大参数长度为2621440),这样在find命令运行几分钟之后,就会出现溢出错误。错误信息通常是“参数列太长”或“参数列溢出”。这就是xargs命令的用处所在,特别是与find命令一起使用。  

        find命令把匹配到的文件传递给xargs命令,而xargs命令每次只获取一部分文件而不是全部,不像-exec选项那样。这样它可以先处理最先获取的一部分文件,然后是下一批,并如此继续下去。  

         在有些系统中,使用-exec选项会为处理每一个匹配到的文件而发起一个相应的进程,并非将匹配到的文件全部作为参数一次执行;这样在有些情况下就会出现进程过多,系统性能下降的问题,因而效率不高; 而使用xargs命令则只有一个进程。另外,在使用xargs命令时,究竟是一次获取所有的参数,还是分批取得参数,以及每一次获取参数的数目都会根据该命令的选项及系统内核中相应的可调参数来确定。

          exec与xargs比较:

(1)exec 每处理一个文件或者目录,它都需要启动一次命令,打开一个进程,效率不好。并且参数列表有长度限制。

(2)exec 格式麻烦,必须用 {} 做文件的代位符,必须用 \; 作为命令的结束符,书写不便。

(3)xargs不能操作文件名有空格的文件,比如#find . -name *test |xargs rm,若有文件名为a test,则会报错,因为这时执行的命令
无法区分哪些是分割符、哪些是文件名中的空格! 而用exec则不会有这个问题。

(4)xargs后面的命令须支持多参数,比如rm a.txt b.txt,同时删除两个文件;而有些命令如unzip 后面直接加一个文件名,故不能使用xargs,必须用-exec。

 

1.命令格式:

xargs [ -p ] [ -t] [ -e[ EOFString ] ] [ -EEOFString ] [ -i[ ReplaceString ] ] [ -IReplaceString ] [ -l [ Number ] ] [ -L Number ] [ -n Number [ -x ] ] [ -s Size ] [ Command [ Argument ... ] ]

 

注: 不要在小写标志和参数之间放置空格。

 

2.命令功能:

它的作用是将参数列表转换成小块分段传递给其他命令,以避免参数列表过长的问题

 

 

3.命令参数:

 

-0 当sdtin含有特殊字元时候,将其当成一般字符,想/'空格等

例如:#echo -n "//"|xargs -0 echo

            //

-a file 从文件中读入作为sdtin

-e flag ,注意有的时候可能会是-E,flag必须是一个以空格分隔的标志,当xargs分析到含有flag这个标志的时候就停止。

-p 当每次执行一个argument的时候询问一次用户。

-n num 后面加次数,表示命令在执行的时候一次用的argument的个数,默认是用所有的。

-t 表示先打印命令,然后再执行。

-i 或者是-I,这得看linux支持了,将xargs的每项名称,一般是一行一行赋值给{},可以用{}代替。

-r no-run-if-empty 当xargs的输入为空的时候则停止xargs,不用再去执行了。

-s num 命令行的最好字符数,指的是xargs后面那个命令的最大命令行字符数。

-L  num Use at most max-lines nonblank input lines per command line.-s是含有空格的。

-l  同-L

-d delim 分隔符,默认的xargs分隔符是回车,argument的分隔符是空格,这里修改的是xargs的分隔符。

-x exit的意思,主要是配合-s使用。

-P 修改最大的进程数,默认是1,为0时候为as many as it can ,这个例子我没有想到,应该平时都用不到的吧。

退出时所返回的值

    0          所有 Command 参数的调用 都返回退出状态 0。

    1-125不能汇编满足指定需求的命令行, 一个或多个 Command 参数的调用 返回一个非零的退出状态,或发生一些其它的错误。

    126     Command 已找到但不能被调用。

    127     找不到 Command。

 

分享到:
评论

相关推荐

    Linux xargs 命令用法详解

    Linux xargs 命令 xargs 是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。 xargs 可以将管道或标准输入(stdin)数据转换成命令行参数,也能够从文件的输出中读取数据。 xargs 也可以将单行或多行文本...

    Linux中xargs命令的使用方式.doc

    xargs 是给命令传递参数的一个过滤器,可以将管道或标准输入的数据转换成参数,默认的命令是 echo,这意味着通过管道传递给 xargs 的输入将会包含换行,不过通过 xargs 的处理,换行将被空格取代。

    node-xargs:构建和执行命令行,node.js 方式

    安装npm install --save xargs用法该模块导出的函数返回一个双工流,该流将写入其中的所有字符串块收集到一个数组中,该数组用作指定命令的参数向量: var streamify = require ( 'stream-array' ) ;var xargs = ...

    JSON流的xargs-Golang开发

    用于JSON流的jsonargs xargs用法输入数据{“ name”:“ foo1”,“ value”:“ bar1”} {“ name”:“ foo2”,“ value”:“ bar2”} {“ name”:“ foo3” ,“ value”:“ bar3”} {“ name”:“ foo4”,...

    linux中xargs命令的各种使用技巧

    xargs是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。下面这篇文章主要给大家介绍了关于linux中xargs命令用法的相关资料,需要的朋友可以参考借鉴,下面来跟着小编一起看看吧。

    find -o -print0 通道 xargs grep 的联合用法

    find /usr/ -type f -name ‘*.conf’ -print0 -o -name ‘*.txt’ -print0 | xargs -0 grep ‘heheda’ 上面这个命令表示: 我要浏览usr目录下所有的文件,并输出conf结尾或者txt结尾的文件名的字符流,所有文件名...

    bux:有意义的xargs

    巴克斯有意义的xargs介绍bux是一个小型终端程序,可以bux基于文本的输入并根据正则表达式规则集执行其他CL程序。编译中bus是使用Haxe编译器构建的,并且需要hxcpp进行编译。 可以使用haxelib程序安装hxcpp库, ...

    shell编程指南,shell脚本,本书共分五部分全。grep家族,sed,AWK,正则表达式,tr用法

    第2章 使用find和xargs 14 第3章 后台执行命令 22 第4章 文件名置换 31 第5章 shell输入与输出 34 第6章 命令执行顺序 46 第二部分 文本过滤 第7章 正则表达式介绍 49 第8章 grep家族 56 第9章 AWK介绍 66 第10章 ...

    rargs:具有模式匹配支持的xargs + awk。 `ls * .bak | rargs -p'(。*)\。bak'mv {0} {1}`

    用法示例 批量重命名文件 假设您有几个备份文件,它们的名称与[removed].sh.bak模式匹配,并且您想要将每个文件名映射回[removed].sh 。 我们想分批处理,因此xargs是很自然的选择,但是如何为每个文件指定名称呢? ...

    在windows系统下使用类liunx工具“find”

    比windows系统下的dos命令find更强大,有dll文件,可以配合xargs工具使用。使用方法 “find --help”

    RedHat 7.2 更换下载源

    方法如下: 卸载默认yum rpm -aq | grep yum | xargs rpm -e --nodeps rpm -aq | grep python-iniparse | xargs rpm -e --nodeps 在软件包文件夹下执行 rpm -ivh *.rpm 将rhel-debuginfo.repo 拷贝到/etc/yum.repo.d...

    LINUX与UNIX_Shell编程指南

    第2章 使用find和xargs 第3章 后台执行命令 第4章 文件名置换 第5章 shell输入与输出 第6章 命令执行顺序 第二部分 文本过滤 第7章 正则表达式介绍 第8章 grep家族 第9章 AWK介绍 第10章 sed 用法介绍 第11章 合并与...

    UNIX shell 编程指南

    find 和 exec xargs 保证shell脚本执行唯一性 用一条命令处理分别改变文件和文件夹的权限 unix时间戳与系统时间相互转换 awk的学习 保护自己编写的shell程序 农行全国集中版代发工资shell程序 Shell程序设计的流程...

    Redis批量删除KEY的方法

    Redis 中有删除单个 Key 的指令 DEL,但好像没有批量删除 Key 的指令,不过我们可以借助 Linux 的 xargs 指令来完成这个动作。 代码如下: redis-cli keys “*” | xargs redis-cli del //如果redis-cli没有设置成...

    Linux Shell编程教程

    第2章使用find和xargs 第3章后台执行命令 第4章文件名置换 第5章shell输入与输出 第6章命令执行顺序 第7章正则表达式介绍 第8章grep 家族 第9章AWK 介绍 第10章sed 用法介绍 第11章合并与分割 第12章tr 用法 第13章...

    Unix shell 基础知识普及

    2. find 和 xargs 3. 后台执行命令 4. 文件名置换 5. SHELL 输入与输出 6. 命令执行顺序 7. 正则表达式介绍 文本过滤 8. GREP 家族 9. AWK 介绍 10. sed 用法介绍 11. 合并与分割 12. tr 用法 13. 登录环境 14. 环境...

    Python3变量与基本数据类型用法实例分析

    主要介绍了Python3变量与基本数据类型用法,结合实例形式分析了Python3保留字、标识符、变量、基本数据类型及相关操作技巧,需要的朋友可以参考下

    LINUXshel详细l编程指南

    第2 章 使用find和xargs 第3 章 后台执行命令 第4 章 文件名置换 第5 章 shell输入与输出 第6 章 命令执行顺序 第7 章 正则表达式介绍 第8 章 grep家族 第9 章 AWK介绍 第10章 sed 用法介绍 第11章 合并...

    shell编程 linux

    002使用find和xargs.pdf 003后台执行命令.pdf 004文件名置换.pdf 005shell输入与输出.pdf 006命令执行顺序.pdf 007正则表达式介绍.pdf 008grep 家族.pdf 009AWK 介绍.pdf 010sed 用法介绍.pdf 011合并与...

    Linux Shell 编程 入门、提高、精通

    第2章使用find和xargs 第3章后台执行命令 第4章文件名置换 第5章shell输入与输出 第6章命令执行顺序 第二部分文本过滤 第7章正则表达式介绍 第8章grep 家族 第9章AWK 介绍 第10章sed 用法介绍 第11章合并与分割 第...

Global site tag (gtag.js) - Google Analytics