xargs
12 July 2018

xargs 简单的来说就是将一串文本,来作为它后面所接 COMMAND 的参数,例如 cat a.txt | xargs echo ,这里的 echo 就是 COMMAND

➜ cat a.txt
a b c
d e f
g h
➜ cat a.txt | xargs echo
a b c d e f g h

-t 查看

➜ cat a.txt | xargs -t echo
echo a b c d e f g h      <== -t 执行的命令
a b c d e f g h

-n 最多执行多少个 arg

➜ cat a.txt | xargs -t -n 2
echo a b
a b
echo c d
c d
echo e f
e f
echo g h
g h

-r

xargs --no-run-if-empty COMMAND
xargs -r COMMAND

-0 表示 '\0' 作为输入定界符

➜ find . -type f -name "*.c" -print0 | xargs -0 wc -l
find  -print0 表示 find 的操作 以 '\0' 来结尾, 不会被 '\n' 和 ' ' 干扰

-I 捕获

➜ find . -name \*.py | xargs grep some_function
➜ cat hosts | xargs -I{} echo {} "\n"

用的最多的一条命令

ps -aux | grep NAME | awk '{print $2}' | xargs kill