# **xargs** ## 说明 **xargs命令** 是给其他命令传递参数的一个过滤器,也是组合多个命令的一个工具。它擅长将标准输入数据转换成命令行参数,xargs能够处理管道或者 stdin并将其转换成特定命令的命令参数。xargs也可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行。xargs的默认命令是echo, 空格是默认定界符。这意味着通过管道传递给xargs的输入将会包含换行和空白,不过通过xargs的处理,换行和空白将被空格取代。xargs是构建单行命令 的重要组件之一 ## 选项 ```markdown xargs [OPTION]... COMMAND INITIAL-ARGS... Run COMMAND with arguments INITIAL-ARGS and more arguments read from input. 非强制性参数以[方括号]表示 -0, --null Items are separated by a null, not whitespace. Disables quote and backslash processing -a, --arg-file=FILE Read arguments from FILE, not standard input -d, --delimiter=CHARACTER Input items are separated by CHARACTER, not by blank space. Disables quote and backslash processing -E END If END occurs as a line of input, the rest of the input is ignored. -e [END], --eof[=END] Equivalent to -E END if END is specified. Otherwise, there is no end-of-file string --help Print a summary of the options to xargs. -I R same as --replace=R (R must be specified) -i,--replace=[R] Replace R in initial arguments with names read from standard input. If R is unspecified, assume {} -L,-l, --max-lines=MAX-LINES Use at most MAX-LINES nonblank input lines per command line -l Use at most one nonblank input line per command line -n, --max-args=MAX-ARGS Use at most MAX-ARGS arguments per command line -P, --max-procs=MAX-PROCS Run up to max-procs processes at a time -p, --interactive Prompt before running commands --process-slot-var=VAR Set environment variable VAR in child processes -r, --no-run-if-empty If there are no arguments, run no command. If this option is not given, COMMAND will be run at least once. -s, --max-chars=MAX-CHARS Limit commands to MAX-CHARS at most --show-limits Show limits on command-line length. -t, --verbose Print commands before executing them --version Print the version number -x, --exit Exit if the size (see -s) is exceeded ``` ## 实例 ```bash cat test.txt | xargs -n3 # 多行输出 echo "nameXnameXnameXname" | xargs -dX # -d选项自定义一个定界符 echo "nameXnameXnameXname" | xargs -dX -n2 # 读取stdin,将格式化后的参数传递给命令 ls *.jpg | xargs -n1 -I cp {} /data/images # 复制所有图片文件到 /data/images 目录 find . -type f -name "*.log" -print0 | xargs -0 rm -f find . -type f -name "*.php" -print0 | xargs -0 wc -l # 统计一个源代码目录中所有php文件的行数 find . -type f -name "*.jpg" -print | xargs tar -czvf images.tar.gz # 查找所有的jpg 文件,并且压缩它们 cat url-list.txt | xargs wget -c # list.txt包含了很多下载的URL,使用xargs下载所有链接 ```