xargs命令使用详解

xargs命令用于传递参数.对传递进来的多个参数,逐个调用命令来执行这个参数.

默认格式,尾部拼接

使用格式:

argu1 argu2 argu3 ... argun | xargs <command>

xargs 会将参数 argu1 ... argun 逐个传递给<command> 来执行,实际执行的过程是:

<command> argu1;

<command> argu2;

...

<command> argun;

即参数会与命令拼接在一起.

"-I replstr"选项,引用传递进来的参数

有时候这不是想要的结果比如:要把n个文件移到目录 tmp/中,下面的命令显然不是想要的结果.

file1 file2 file3 ... filen |xargs mv tmp/

它实际上会是这样来执行的:

mv tmp/ file1;

...

mv tmp/ filen;


这刚好与目的相反.这进需要用到选项 "-I replstr" , 这个选项的作用是将传递的参数用 " replstr" 替换. 在<command> 中就可以使用这个"replstr"变量.

重写上面的命令:

file1 file2 file3 ... filen |xargs -I % mv % tmp/;

当然,% 可以用别的字符串替换,比如"hello,world".

"-L max-lines" 选项,控制参数传递的个数

xargs 还可以控制每次传递进来的参数的个数.使用选项" -L max-lines".

file1 file2 file3 ... filen |xargs -L 3 -I % mv % tmp/;

实际执行会是:

mv file1 file2 filetmp/;

...

mv file3k+1 file3k+2 file3k+3  tmp/;

"-a file",从文件中读取参数

上面的例子都是从管道读取参数,使用"-a file" 选项可以从文件中读取参数.

下面的几个选项可以控制文件的结构,即可以指定分隔符(-d delim),文件结束符(-E eofstr).由分隔符(delim)来分隔每一个参数,由文件结束符(eofstr)指定文件结束.那么参数文件应该是下面的结构.

argu1 <delim> argu2 <delim> argu3 <delim> argu4 ... <delim> argun <eofstr> argun+1 <delim> argun+2 <delim>... argun+m

前面的n个参数会被读取,后面的参数将会被丢弃.

转载于:https://www.cnblogs.com/rango/p/3176442.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值