Yan-Daojiang's Wiki Help

xargs

xargs 命令的作用是将标准输入转为命令行参数。

xargs [options] [command [initial-arguments]] $ echo "hello world" | xargs echo hello world

-d

默认情况下,xargs将换行符和空格作为分隔符,把标准输入分解成一个个命令行参数,-d参数可以更改分隔符。

-p / -t

使用xargs命令以后,由于存在转换参数过程,有时需要确认一下到底执行的是什么命令。

-p 参数打印出要执行的命令,询问用户是否要执行。 -t 参数则是打印出最终要执行的命令,然后直接执行,不需要用户确认。

-0

由于xargs默认将空格作为分隔符,所以不太适合处理文件名,因为文件名可能包含空格。

find命令有一个特别的参数-print0,指定输出的文件列表以null分隔。然后,xargs命令的-0参数表示用null当作分隔符。

find /path -type f -print0 | xargs -0 rm

-L / -n

-L 参数指定多少行作为一个命令行参数。-n参数指定每次将多少项,作为命令行参数。

-I

如果xargs要将命令行参数传给多个命令,可以使用-I参数。

-I 指定每一项命令行参数的替代字符串。

$ cat foo.txt one two three $ cat foo.txt | xargs -I file sh -c 'echo file; mkdir file' one two three $ ls one two three

--max-procs

xargs默认只用一个进程执行命令。如果命令要执行多次,必须等上一次执行完,才能执行下一次。

--max-procs参数指定同时用多少个进程并行执行命令。--max-procs 2表示同时最多使用两个进程,--max-procs 0表示不限制进程数。

Last modified: 30 August 2024