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