xargs 是 Linux/Unix 系统下常用的命令行工具,用于将输入数据转化为命令行参数,以高效地批量处理数据。它通常与管道 (|) 连用,将前一个命令的输出作为后一个命令的参数。
下面是 man xargs 的常见内容中文解析:
简要说明
xargs - build and execute command lines from standard input
xargs —— 从标准输入构建并执行命令行
基本用法
xargs [options] [command [initial-arguments]]
常用参数说明
| 参数 | 作用 |
|---|---|
| -n N | 每次命令行只使用 N 个参数(例:-n 1 表示每次只给命令一个参数) |
| -d | 指定输入分隔符(如 -d '\n' 表示以换行符分隔) |
| -I {} | 定义替换字符串。用 {} 代表每个输入项出现在命令行的位置 |
| -p | 每次执行前询问用户确认 |
| -r | 输入为空时不运行命令(有的系统中是 -r,有的是 -e) |
| -0 | 输入项以空字符(null)分隔(常用于配合 find ... -print0) |
常见示例
-
基本用法:
echo "a b c" | xargs mkdir依次新建 a、b、c 文件夹。
-
与 find 配合删除:
find . -name "*.log" | xargs rm删除当前目录及子目录下所有
.log文件。 -
每行一个参数:
cat list.txt | xargs -n 1 echolist.txt 每一行都会单独作为参数 echo 一次。
-
使用空字符分隔(配合 -print0):
find . -name "*.txt" -print0 | xargs -0 rm能安全处理包含空格/特殊字符的文件名。
-
替换字符串:
echo "file1 file2" | xargs -n 1 -I {} mv {} {}.bak把 file1、file2 分别重命名为 file1.bak、file2.bak。
-
并发执行
echo "file1 file2 3 4 5 6 7 8 9" | xargs -P 8 -I {} 要并发执行的命令 {}并发执行
查看 man 页
在终端可通过如下命令查看完整帮助文档:
man xargs
或获得更直观说明:
xargs --help
0