Chinaunix首页 | 论坛 | 博客
  • 博客访问: 48474
  • 博文数量: 12
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 70
  • 用 户 组: 普通用户
  • 注册时间: 2014-07-25 14:40
文章分类

全部博文(12)

文章存档

2015年(4)

2014年(8)

我的朋友

分类: 系统运维

2015-01-20 21:17:23

man xargs:

点击(此处)折叠或打开

  1. xargs [-0prtx] [-E eof-str] [-e[eof-str]] [--eof[=eof-str]] [--null]
  2.        [-d delimiter] [--delimiter delimiter] [-I replace-str] [-i[replace-
  3.        str]] [--replace[=replace-str]] [-l[max-lines]] [-L max-lines]
  4.        [--max-lines[=max-lines]] [-n max-args] [--max-args=max-args] [-s max-
  5.        chars] [--max-chars=max-chars] [-P max-procs] [--max-procs=max-procs]
  6.        [--interactive] [--verbose] [--exit] [--no-run-if-empty]
  7.        [--arg-file=file] [--show-limits] [--version] [--help] [command
  8.        [initial-arguments]]
用途:
    1.构造参数列表并运行命令,即将接收的参数传递给后面的command 命令执行
    2.将多行输入转换为单行 (特殊功效)
优点: 1. 将输入参数整理后,去除换行符,以一个列表形式处理
           2. 避免参数过长引发的问题,使用xargs -n 参数适当控制,对于经常产生大量输出的命令如find、locate和grep来说非常有用
xargs 一般是和管道一起使用: 
    XXcomand  | xargs  -x  comand initial-args
-x 代表选项
选项:
-p 操作具有可交互性,每次执行comand都交互式提示用户选择
-i -i 选项告诉 xargs 可以使用{}代替传递过来的参数, 建议使用-I,其符合POSIX标准
-I   格式: xargs  -I  rep-str  comand  rep-srt  rep-str 为代替传递给xargs参数, 可以使 {} $ @ 等符号 ,其主要作用是当xargs   command 后有多个参数时,调整参数位置。
例如:        

点击(此处)折叠或打开

  1. find . -name "*.bak " |xargs -I {} cp {} /tmp/
-t 启用命令行输出模式:其先回显要运行的命令,然后执行命令,打印出命令结果,跟踪与调试xargs的利器,也是研究xargs运行原理的好办法;
-r 如果没有要处理的参数传递给xargsxargs 默认是带 空参数运行一次,如果你希望无参数时,停止 xargs,直接退出,使用 -r 选项即可,其可以防止xargs 后面命令带空参数运行报错。If the standard input does not contain any nonblanks, do not run the command, exit
-s size
    设置每次构造Command行的长度总大小,包括 command +init-param +传递参数,Size 参数必须是正整数 
-L num
    从标准输入一次读取num行送给Command命令 ,-l和-L功能一样,不建议使用。
-n xargs 的-n选项设置每次送给command命令的参数个数,参数以空白字符或换行符分割
(-L 和 -n 标志是互相排斥的;最后指定的标志生效。)
-x 如果有任何 Command 行大于 -s Size 标志指定的字节数,停止运行 xargs 命令,-L -I -n 默认打开-x参数
常见的经典用法:   

点击(此处)折叠或打开

  1. find . -name "*.bak" |xargs rm -rf {}\
帮助理解各个参数的实例:
-t   参数,打开调试功能,显示每次所组的命令,在调试中非常有用,可以看出xargs的执行原理
-L num 参数控制每次输入的行数,如下是控制每次输入2行
此处代码为打印今日之后十天的时间日期:

点击(此处)折叠或打开

  1. seq 1 10 |xargs -i date -d "{} days " +%Y-%m-%d
     十天前的:

点击(此处)折叠或打开

  1. seq 1 10 |xargs -i date -d "{} days ago " +%Y-%m-%d |sort -r
重命名文件的:

点击(此处)折叠或打开

  1. ls |xargs -t -i mv {} {}.bak

 





阅读(1589) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~