一直以来, 都被我用作是管道符的连接命令,比如 delete.txt|xargs rm -f,并且一般是在直接管道不可用的情况下,才会想起用 xargs 命令来分行处理。但是今天,在使用 xargs 进行文件批处理的时候,发现了很多 xargs 的小妙用。

替换字符串

xargs -I 将指定一个字符串 {},用于代替接受的字符串进行操作,类似于 -exec{}

比如,有10个文件,想要将他们重命名为以 .txt 结尾,可以这么操作:

多行输入单行输出

xargs 虽然是分行处理工具,但其默认输出却是单行的:

单行输入多行输出

xargs -n 可指定输出时每行输出多少个参数:

xargs -d 可指定一个定界符,分割参数,和 cut -d 类似:

-n-d 结合使用:

处理带空格的文件名

当文件名包含空格时,作字符分割往往会出错,比如:

上面这个命令,将 0 0 0.txt 这个文件名称也给分割了。

为了避免这种情况,我们需要加上 -0 参数,-0\0 作为定界符。

对于此情况,官方也有特别说明: