xargs参数

发布时间 2023-10-10 10:21:23作者: hellozhangjz

功能:将标准输入分割后转化为命令参数。

例子:echo "*.py"| xargs find ./ -name,查找当前目录下的所有py文件。

-d 制定分隔符

默认情况下,xargs将空格和换行符作为分隔符,xargs -d "\t" command指定\t为分隔符

-p -t

-p在执行命令前会打印命令并确认,-t只会打印命令,不用确认。

-0 与find

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

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

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

上面命令删除/path路径下的所有文件。由于分隔符是null,所以处理包含空格的文件名,也不会报错。

-n

-n指定每次将多少项作为命令行参数

echo a b c | xargs -n 1 -t echo
# echo a
# a
# echo b
# b
# echo c
# c

-I

指定参数位置,xargs默认将参数放在命令最后,-I可以指定占位符。

echo ./ | xargs -I pos find pos -name "*.py"查找当前目录下的py文件,pos为占位符

--max-procs

-n参数时,命令会执行多次,默认一个进程执行,--max-procs可以指定最多使用几个进程,--max-procs 0不限制进程

参考链接

https://ruanyifeng.com/blog/2019/08/xargs-tutorial.html