linux xargs详解
2015-10-28 23:35
555 查看
from: /article/7871364.html
xargs [-0prtx] [-E eof-str] [-e[eof-str]] [–eof[=eof-str]] [–null]
[-d delimiter] [–delimiter delimiter] [-I replace-str] [-i[replace-
str]] [–replace[=replace-str]] [-l[max-lines]] [-L max-lines]
[–max-lines[=max-lines]] [-n max-args] [–max-args=max-args] [-s max-
chars] [–max-chars=max-chars] [-P max-procs] [–max-procs=max-procs]
[–interactive] [–verbose] [–exit] [–no-run-if-empty]
[–arg-file=file] [–show-limits] [–version] [–help] [command
[initial-arguments]]
最经典应用模式: somecommand |xargs -item command
不带command ,默认的使用echo 输出
用途:
1.构造参数列表并运行命令,即将接收的参数传递给后面的command 命令执行
优点:
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 后有多个参数时,调整参数位置。例如:
-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参数
常见的经典用法:
帮助理解各个参数的实例
-t 参数,打开调试功能,显示每次所组的命令,在调试中非常有用,可以看出xargs的执行原理
-L num 参数控制每次输入的行数,如下是控制每次输入2行
[cpp] view plaincopy
-n num 控制每次输入的参数个数
假设你希望使用 rm 命令(该命令将作为 xargs 命令的参数)删除文件。然而,rm 只能接受有限数量的参数。如果你的参数列表超出该限制怎么办?xargs 的 -n 选项限制单个命令行的参数个数。
[cpp] view plaincopy
-E EOF 指定输入结束符
[cpp] view plaincopy
-r xargs 默认是空参数comand也要执行一次,如使用-r参数遇到空参数则直接退出,不会再执行一次,避免程序执行错误。
[cpp] view plaincopy
xargs [-0prtx] [-E eof-str] [-e[eof-str]] [–eof[=eof-str]] [–null]
[-d delimiter] [–delimiter delimiter] [-I replace-str] [-i[replace-
str]] [–replace[=replace-str]] [-l[max-lines]] [-L max-lines]
[–max-lines[=max-lines]] [-n max-args] [–max-args=max-args] [-s max-
chars] [–max-chars=max-chars] [-P max-procs] [–max-procs=max-procs]
[–interactive] [–verbose] [–exit] [–no-run-if-empty]
[–arg-file=file] [–show-limits] [–version] [–help] [command
[initial-arguments]]
最经典应用模式: somecommand |xargs -item command
不带command ,默认的使用echo 输出
用途:
1.构造参数列表并运行命令,即将接收的参数传递给后面的command 命令执行
2.将多行输入转换为单行 (特殊功效)
优点:
1. 将输入参数整理后,去除<newline>换行符,以一个列表形式处理 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 后有多个参数时,调整参数位置。例如:
find . -name "*.txt " |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参数
常见的经典用法:
find . -name "*.txt" |xargs rm {}
帮助理解各个参数的实例
-t 参数,打开调试功能,显示每次所组的命令,在调试中非常有用,可以看出xargs的执行原理
-L num 参数控制每次输入的行数,如下是控制每次输入2行
[cpp] view plaincopy
[root@andes.com ~/tmp/dir]#ls -l total 44 -rwx------ 1 root root 1026 Sep 27 05:28 data.txt -rw-r--r-- 1 root root 1047 Sep 27 05:28 d.txt -rwx------ 1 root root 2009 Sep 27 05:28 env2.txt -rwx------ 1 root root 2009 Sep 27 05:28 env.txt -rwx------ 1 root root 1998 Sep 27 05:28 export2.txt -rwx------ 1 root root 1998 Sep 27 05:28 export.txt -rwx------ 1 root root 28 Sep 27 05:28 fuck.txt -rwx------ 1 root root 5373 Sep 27 05:28 set.txt -rw-r--r-- 1 root root 21 Sep 27 05:28 s.txt -rw-r--r-- 1 root root 35 Sep 27 10:13 t.txt [root@andes.com ~/tmp/dir]#ls -l |xargs -t -L 2 /bin/echo total 44 -rwx------ 1 root root 1026 Sep 27 05:28 data.txt total 44 -rwx------ 1 root root 1026 Sep 27 05:28 data.txt /bin/echo -rw-r--r-- 1 root root 1047 Sep 27 05:28 d.txt -rwx------ 1 root root 2009 Sep 27 05:28 env2.txt -rw-r--r-- 1 root root 1047 Sep 27 05:28 d.txt -rwx------ 1 root root 2009 Sep 27 05:28 env2.txt /bin/echo -rwx------ 1 root root 2009 Sep 27 05:28 env.txt -rwx------ 1 root root 1998 Sep 27 05:28 export2.txt -rwx------ 1 root root 2009 Sep 27 05:28 env.txt -rwx------ 1 root root 1998 Sep 27 05:28 export2.txt /bin/echo -rwx------ 1 root root 1998 Sep 27 05:28 export.txt -rwx------ 1 root root 28 Sep 27 05:28 fuck.txt -rwx------ 1 root root 1998 Sep 27 05:28 export.txt -rwx------ 1 root root 28 Sep 27 05:28 fuck.txt /bin/echo -rwx------ 1 root root 5373 Sep 27 05:28 set.txt -rw-r--r-- 1 root root 21 Sep 27 05:28 s.txt -rwx------ 1 root root 5373 Sep 27 05:28 set.txt -rw-r--r-- 1 root root 21 Sep 27 05:28 s.txt /bin/echo -rw-r--r-- 1 root root 35 Sep 27 10:13 t.txt -rw-r--r-- 1 root root 35 S
-n num 控制每次输入的参数个数
假设你希望使用 rm 命令(该命令将作为 xargs 命令的参数)删除文件。然而,rm 只能接受有限数量的参数。如果你的参数列表超出该限制怎么办?xargs 的 -n 选项限制单个命令行的参数个数。
[cpp] view plaincopy
[root@andes.com ~/tmp/dir]#ls data.txt d.txt env2.txt env.txt export2.txt export.txt fuck.txt set.txt s.txt t.txt [root@andes.com ~/tmp/dir]#ls |xargs -t -n 2 file file data.txt d.txt data.txt: ISO-8859 text d.txt: ISO-8859 text file env2.txt env.txt env2.txt: ASCII text, with very long lines env.txt: ASCII text, with very long lines file export2.txt export.txt export2.txt: ASCII text, with very long lines export.txt: ASCII text, with very long lines file fuck.txt set.txt fuck.txt: ASCII text set.txt: ASCII text, with very long lines file s.txt t.txt s.txt: ASCII text t.txt: ASCII text [root@andes.com ~/tmp/dir]#
-E EOF 指定输入结束符
[cpp] view plaincopy
[root@andes.com ~/tmp/dir]#cat t.txt tata-hi -fuck - ok fuck _you _ you [root@andes.com ~/tmp/dir]#xargs -a t.txt -E _ tata-hi -fuck - ok fuck _you [root@andes.com ~/tmp/dir]#xargs -a t.txt -E - tata-hi -fuck
-r xargs 默认是空参数comand也要执行一次,如使用-r参数遇到空参数则直接退出,不会再执行一次,避免程序执行错误。
[cpp] view plaincopy
[root@andes.com ~/tmp/dir]#ls data.txt d.txt env2.txt env.txt export2.txt export.txt fuck.txt set.txt s.txt t.txt [root@andes.com ~/tmp/dir]#ls |grep Tata [root@andes.com ~/tmp/dir]#ls |grep Tata |xargs -t /bin/echo [root@andes.com ~/tmp/dir]#ls |grep Tata |xargs -t -r [root@andes.com ~/tmp/dir]#
相关文章推荐
- linux svn源代码安装
- Centos7中未知显示器设置屏幕分辨率
- centos LAMP第四部分mysql操作 忘记root密码 skip-innodb 配置慢查询日志 mysql常用操作 mysql常用操作 mysql备份与恢复 第二十二节课
- linux程序包管理之rpm
- (转)每天一个Linux命令(6):mv
- Linux进程间通信(IPC)编程实践(0) 进程间通信简述和PV原语
- 如何从Windows远程上传文件到Linux(例如CentOS 7)
- Linux 装B之作酷炫小工具
- Centos7安装图形界面
- Linux 查看PCI-E插槽使用情况
- Linux学习路线
- linux下IPC之消息队列
- archlinux编译rk3288内核出错
- Linux 对VIM的一些格式设置
- Linux中/etc/init.d
- linux 下各errno的意义
- Unix/Linux下退出帐户/关闭终端之后继续运行相应的进程
- linux下部署kettle
- Installing Ubiquiti Unifi Controller on CentOS 6.x
- linux环境变量设置