0
点赞
收藏
分享

微信扫一扫

xargs命令详解


文章目录

  • ​​一、概述​​
  • ​​二、选项​​
  • ​​`-0(数字零)`​​
  • ​​`-n`​​
  • ​​`-I`​​
  • ​​`-i`​​
  • ​​`-r`​​

参考书籍:《Linux Shell核心编程指南》——丁明一
参考文章:​​xargs命令详解​​

一、概述

xargs可以读取标准输入和管道中的数据,用于弥补有些命令(如echo、kill、rm)不能从管道中读取数据的不足。
xargs命令详解_xargs命令详解
使用echo,输出结果为空,因为它不能从管道中读取数据
不指定程序时xargs默认会将数据传递给echo,上面的命令等价于

cut -d: -f1 /etc/passwd | xargs echo

二、选项

​-0(数字零)​

xargs默认以​​空格、Tab制表符、回车符​​​为分隔符和结束符,当有的文件本身包含空格时,就会出问题
xargs命令详解_替换字符串_02
xargs会把’hello world.txt’识别为两个文件

针对该问题,find提供了一个​​print0​​​选项,设置find在输出文件名后自动添加一个​​NULL​​​来替代换行符,而xargs也可以通过​​-0​​​选项,指定使用NULL而不是​​空格、Tab制表符、回车符​​为分隔符和结束符。

find ./ -name '*.txt' -print0 | xargs -0 rm

​-n​

指定一次读取几个参数

[root@localhost test]# seq 5 | xargs  #默认调用全部参数
1 2 3 4 5
[root@localhost test]# seq 5 | xargs -n 2 #设置一次调用2个参数
1 2
3 4
5

​-I​

指定一个替换字符串

[root@localhost test]# touch {a,b,c}.txt
[root@localhost test]# ls *.txt | xargs -I[] cp [] /tmp/ #设置[]为替换字符串,[]的值依次为a.txt、b.txt、c.txt

​-i​

与-I类似,如果不指定替换符,默认为{}

ls *.txt | xargs -i cp {} /tmp/
ls *.tar |xargs -i docker load -i {} #逐个导入镜像

​-r​

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


举报

相关推荐

0 条评论