xargs [options] [command]
xargs从标准输入读取数据,将数据转换为command命令的参数来执行该命令。从标准输入读取数据时,使用空格或换行符
作为默认分隔符,如果没有指定命令,使用/bin/echo
作为默认命令。
比如/tmp
目录下有a, b, c
三个文件,用ls -1
命令显示为
$ ls -1 /tmp
a
b
c
使用xargs
过滤后输出为
$ ls -1 /tmp | xargs -t
echo a b c
a b c
-t
选项将执行的命令行先打印出来,然后再执行命令。
$ ls -1 /tmp | xargs -t -n1
echo a
a
echo b
b
echo c
c
$ ls -1 | xargs -t -n2
echo a b
a b
echo c
c
注意该选项以换行符
作为分隔符来读取输入数据
$ echo -e "a\nb\nc" | xargs -t -L1
echo a
a
echo b
b
echo c
c
$ echo -e "a\nb\nc" | xargs -t -L2
echo a b
a b
echo c
c
$ echo 'a!b!c' | xargs -t -d'!' -n1
echo a
a
echo b
b
echo c
c
用于处理含有空格
,引号
或反斜杠
这样字符的输入数据(如文件名中含有空格),通常与find -print0
命令配合
$ find . -type f -print0
./a./b./c
$ find . -type f -print0 | xargs -0
./a ./b ./c