64 lines
1.5 KiB
Markdown
64 lines
1.5 KiB
Markdown
|
||
---
|
||
#领域/Linux
|
||
|
||
#复盘/2
|
||
|
||
## 一句话描述
|
||
|
||
[__xargs 使用说明______]
|
||
|
||
---
|
||
|
||
## 核心示例
|
||
|
||
xargs 接收管道 / 标准输入的文本内容,把它转换成后续命令的「参数列表」,然后执行这个命令
|
||
|
||
### ✅ 基本用法
|
||
|
||
```bash
|
||
find . -name "*.log" | xargs rm -rf
|
||
```
|
||
|
||
### ✅ 生产环境用法
|
||
|
||
```bash
|
||
find [路径] [条件] -print0 | xargs -0 -I {} 目标命令 {} 固定参数
|
||
```
|
||
|
||
|
||
### ✅ 默认无占位符 vs. 自定义占位符
|
||
|
||
```bash
|
||
# 默认无占位符
|
||
ls *.txt | xargs rm -rf
|
||
# ls 输出:a.txt b.txt
|
||
# xargs 拼接后执行:rm -rf a.txt b.txt
|
||
|
||
# -I {} 指定占位符
|
||
find . -name "*.txt" | xargs -I {} mv {} /tmp/bak/{}.bak
|
||
# 命令A | xargs -I {} 目标命令 {} 固定参数
|
||
```
|
||
|
||
### ✅ 生产环境:兼容带空格/特殊字符的文件名
|
||
|
||
```bash
|
||
# user info.log 或 data|test.csv
|
||
# 默认空格会被当成参数分隔符
|
||
find [路径] [条件] -print0 | xargs -0 目标命令
|
||
# find -print0:输出时使用空字符\0作为文件名的分隔符
|
||
# xargs -0:接收时使用空字符\0作为分隔符
|
||
```
|
||
|
||
## 参数说明
|
||
|
||
- 默认无占位符,自动拼接参数列表->追加至末尾->执行命令,(默认将空格、制表符、换行符作为参数分隔符)
|
||
- -I {},指定占位符
|
||
- -print0 | xargs -0:指定\0为文件名分隔符
|
||
|
||
| 选项 | 说明 |
|
||
| ---- | --------------- |
|
||
| -p | 执行前交互式确认 |
|
||
| -t | 执行前打印要执行的命令 |
|
||
| -n N | 每次只传递 N 个参数执行命令 |
|