每天一个Linux命令-xargs

110 阅读1分钟

一、命令概述

是英语词组eXtended ARGuments的缩写,它从标准输入中读取由空格或者换行分隔的项,将其转化为空格分隔的参数,然后传递给后面的命令执行一次或者多次。

1.注

  • xargs后面的默认命令为echo
  • 标准输入中的空行不做处理
  • 如果想将标准输入中的空格、反斜杠、引号转化成参数,可以通过添加引号或者反斜杠的方式进行保护

二、命令语法

xargs [操作选项] [命令]

1.常用操作选项

  • -d [字符] delimiter,定义输入的分隔符为指定字符
echo -n "hello#world" | xargs -d "#" echo

2-1-1.png

  • -n [数字] number,定义每次传给命令行的最大参数个数,默认是命令行所能接受的最大个数
echo -n "hello#world" | xargs -d "#" -n 1

2-1-2.png

  • -p prompt,每次执行命令之前先提示要执行的命令并询问用户是否继续执行
echo -n "hello#world" | xargs -d "#" -n 1 -p

2-1-3.png

  • -t 在执行命令之前将它打印出来,不需要用户确认
echo -n "hello#world" | xargs -d "#" -n 1 -t

2-1-4.png

  • -I 指定占位符,标识参数使用的位置
echo -n "hello#world" | xargs -I {} echo {}

2-1-5.png

  • -r no-run-if-empty,如果传递的参数为空,就不执行
echo | xargs -r

2-1-6.png

三、常用操作

testfile.txt

lalala
hahaha
heihei haha
'\'a "\"n \\t
nnn

  • 将多行数据处理为一行
cat testfile.txt | xargs

3-1-1.png

  • 将一行数据分成多行
cat testfile.txt | xargs | xargs -n 2

3-1-2.png

  • 批量执行任务
cat testfile.txt | xargs touch
cat testfile.txt | xargs rm

3-1-3.png