代码改变世界

xargs命令

2014-07-10 11:59  夏洛克·福尔摩斯  阅读(329)  评论(0编辑  收藏  举报

xargs命令把从stdin接受到的数据重新格式化。例如:

$command | xargs

    xargs命令可以将多行输入转换成单行输出

$cat example.txt

1 2 3 4 5 6

7 8 9 10

11 12

$cat example.txt | xargs

1 2 3 4 5 6 7 8 9 10 11 12

    xargs也可以分成多行输出,每行输出n个。如:

$cat example.txt | xargs –n 3

1 2 3

4 5 6

7 8 9

10 11 12

    xargs可以读取stdin,然后将格式化参数传递给命令,如:

$cat example.txt | xargs –n 7 echo

1 2 3 4 5 6 7

8 9 10 11 12

    同时可以结合find使用xargs,如:

$ find . –type f –name “*.txt” –print | xargs rm –f

    以上删除文件的做法比较危险,很多文件都可能会包含空格符,而xargs很可能会误认为它们是定界符,一下是较安全的方法:

$ find . –type f –name “*.txt” –print0 | xargs -0 rm –f

    xargs -0将\0作为输入定界符。

    以下是xargs更强大的一个应用,比如统计所有c程序文件的行数:

$ find . –type f –name “*.c” –print0 | xargs -0 wc -l