介绍 xargs 工作原理和常见用法
工作原理
xargs 从标准输入读 stdin 中读取数据,并根据分隔符(通常是空格、制表符或换行符)切分,将切分后的部门作为参数传递给后面的命令。然后一直重复。如下步骤:
- 读取 stdin,检测到分隔符
- 构建命令,执行
- 等待命令执行完成,然后重复第一步
常见用法
xargs 常用于,需要把一个命令输出当作另一个命令参数传入的情况。对比 |
的数据流向如下:
|
stdout -> stdin : 管道可以让标准输出到标准输入xargs
stdin -> command arguments:可以让标准输入到命令行参数command1 | xargs command2
stdout -> stdin -> command arguments 组合使用可以让命令 1 的输出到命令 2 的参数
xargs 不使用任何选项时,会按照每个分隔符切割出一个部分,就执行一次命令,是一个循环执行的过程
# 删除多个文件,ls展示出所有的文件,过滤出txt格式的,然后每个文件都作为rm的参数,循环删除
ls | grep .txt | xargs rm
构建复杂的命令时候,可以使用-I
选项,-I 后接占位符,每次替换时,分割出来的片段将会替换占位符构建命令
ls | grep .txt | xargs -I {} cp {} /destination/
还可以使用 -P 选项并发执行命令
cat file.txt | xargs -P 4 -I {} command {}
如何 debug 调试 xargs?
用-p
选项可以进入 prompt 模式,每次执行命令前将会让用户提示,这样子可以看到每次执行的命令