# xargs 命令

`xargs` 指令可以从标准输入读取数据，并利用这些数据“组建”为参数并“执行”指令。它的作用是将参数列表转换成小块分段传递给其他命令，以避免参数列表过长的问题。

`xargs` 的默认命令 COMMAND 是 `echo` ，**空格** 是默认定界符。 这意味着通过管道传递给 `xargs` 的输入将会包含换行和空白，不过通过 `xargs` 的处理，换行和空白将被空格取代。

`xargs` 是构建单行命令的重要组件之一。

## 命令用法

```bash
$ xargs [OPTION]... COMMAND [INITIAL-ARGS]...
```

使用 `INITIAL-ARGS` 参数以及从 input 那里读到的参数一起传递给 `COMMAND` 命令运行。

## 常用可选参数

| 参数                          | 说明                                                                                      |
| --------------------------- | --------------------------------------------------------------------------------------- |
| `-0, --null`                | 各个参数项由 null 分割而不是空格分隔；禁止任何引号以及反斜杠处理，还有逻辑上的 EOF 处理                                       |
| `-a, --arg-file=FILE`       | 从 `FILE` 文件中读取参数而不是从标准输入中读取；如果你使用此选项，除非 标准输入 已经被重定向到 `/dev/null`，否则，执行命令时不会影响 标准输入 中的数据 |
| `-d, --delimiter=CHARACTER` | 输入流中的参数项由 `CHARACTER` 分割而不是空格分割；禁止任何引号以及反斜杠处理，还有逻辑上的 EOF 处理                             |
| `-E END`                    | 设置逻辑上的 EOF 字符串；如果在一行的输入中出现 END，那么剩下的输入内容都被忽略（如果指定了 `-0` 或 `-d` 则此项忽略                    |
| `-i, --replace[=R]`         | 将从标准输入中读取到的 INITIAL-ARGS 中的值替换掉指定的 `R`，如果 R 没有指定，就假定使用 `{}`                             |
| `-L, --max-lines=MAX-LINES` | 每条指令行最多使用 `MAX-LINES` 行非空输入行；末尾的空白会使一个输入行在逻辑上延伸到下一行                                     |
| `-n, --max-args=MAX-ARGS`   | 每条指令行最多使用 `MAX-ARGS` 个参数                                                                |
| `-P, --max-procs=MAX-PROCS` | 同时运行 `MAX-PROCS` 个进程，默认值是 1，如果指定为 0，则 xargs 将尽可能的运行多个进程；一般配合 `-n` 或 `-L` 使用。否则最会执行一个进程  |
| `-r, --no-run-if-empty`     | 如果标准输入中没有任何非空的字符，则不运行命令；默认情况下即使标准输入没有非空字符，命令也会被运行一次                                     |

## 使用实例

1. 递归删除目录下的 `.jpg` 文件：

   ```bash
    $ find . -name "*.jpg" | xargs rm
   ```

## ※ xargs 和管道 | 的区别

* 管道 `|` ：前面的标准输出作为后面的标准输入；
* xargs ：将标准输入作为命令的参数；


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://linux-in-action.gitbook.io/project/ji-ben-cao-zuo/xargs.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
