Linux命令备忘实例(9)——参数代换xargs

管道命令可以将stdout重定向到stdin,但是对于只能接受命令行参数的形式接收数据的命令,无法通过stdin接收数据。此时就需要将stdin转换为后续命令的命令行参数。xargs就是实现这个功能的命令:擅长将stdin的数据转换为命令行参数,也可以将单行或多行文本输入转换为其他格式。
一般编写shell命令都追求单行命令,使用管道符进行连接,如果后续命令需要以命令行参数接收数据,那么xargs就是构建单行命令的重要组件之一。

1.概览

这里写图片描述
xargs需要紧跟在管道符之后,以stdin作为输入数据源。将接收到的数据重新格式化,然后传给后续需要命令行参数的命令。

2.特性实例

1.将多行输入转换为单行

xargs默认的定界符是空格,每一个参数是由这个定界符分割的。默认xargs可以将换行符去除并用空格分割当做多个参数。

user@ubuntu:~$ echo -e "a b c\nd e"
a b c
d e
user@ubuntu:~$ echo -e "a b c\nd e" | xargs
a b c d e

2.将单行输入转换为多行

xargs的-n选项可以指定每行的参数个数的最大数目。

user@ubuntu:~$ echo -e "a b c d e" | xargs -n 2
a b
c d
e

3.指定分割参数的定界符

-d选项可以用来指定自定义的定界符来分割stdin的输入数据。

user@ubuntu:~$ echo -e "aXbXcXdXe" | xargs -d X tr [:lower:] [:upper:]
A
B
C
D
E

4.指定替换参数

使用-I选项可以指定一个替换字符串,然后在命令行参数中用这个替换字符串来代替参数。

user@ubuntu:~$ echo -e "aXbXcXdXe" | xargs -d X -I {} command-cmd {}

5.结合find

-0参数可以指定\0作为定界符,可以避免很多问题。

user@ubuntu:~$ find . -type f -name "*.bak" -print0 | xargs -0 rm -f
user@ubuntu:~$ find /src -type f -name "*.py" -print0 | xargs -0 wc -l
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值