赞
踩
xargs可以将一个命令的输出作为参数发送给另一个命令
1.xargs命令:
xargs接收管道输入,也可以接收来自文件的输入。xargs使用该输入作为我们指定的命令的参数。如果我们没有给xargs指定特征的命令,则默认使用echo。xargs始终生成单行输出,即使输入的数据是多行的。
假如我们使用ls的-1(每行列出一个文件)选项,则会得到一列文件名称:
$ ls -1 ./*.sh
这个命令列出当前目录中的所有Shell脚本文件。
- ./test01.sh
- ./test02.sh
- ./test03.sh
如果我们将输出结果通过管道传递给xargs,会得到什么样的效果?
$ ls -1 ./*.sh | xargs
可以看出来,输出以一串文本的形式写到了终端上。由此可见,xargs可以将输出作为参数传递给其他命令。
./test01.sh ./test02.sh ./test03.sh
2.配合wc命令使用xargs
我们可以使用xargs命令轻松地让wc命令计算多个文件中的单词数,字符数和行数
$ ls *.c | xargs wc
执行结果如下:
- 52 91 1038 1.c
- 19 43 276 2.c
- 13 98 290 3.c
- 84 172 1604 total
3.使用带有确认消息的xargs
可以使用-p来执行下一步的命令,如果我们通过xargs将一串文件名字的字符传递给touch命令,touch将创建这些文件。
$ echo 'one two three' | xargs -p touch
终端上显示将要执行的命令,xargs等待我们输入y或Y,n或N。如果只按回车键则视为n.只有当输入y或Y才执行该命令。
我们按下y和回车键,然后使用ls用来检查文件是否已经创建
$ ls one two three
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。