【linux命令】单行命令利器——xargs
来源:互联网 发布:舞剧十面埋伏知乎 编辑:程序博客网 时间:2024/06/06 01:14
bash黑客都喜欢单行命令——命令间并不用分好链接,而是使用链接操作符进行连接。
xrags把从stdin就收到的数据重新格式化。在座位参数提供给其他命令。
将多行数据单行输出:
$cat example.txt
1
2
3
456
$cat example.txt | xargs
1 2 3 4 5 6
将单行数据多行输出
$cat example.txt | xargs -n 3
以每行3个数字(空格为界定符)
自己定义界定符:
$ echo “spiltxspiltxspilt” | xargs -d “x” -n 2
spilt spilt
spilt
读取stdin,将格式化参数传递给命令
我们这里编写一个定制版echo脚本
#!/bin/bash
#FIlename:cecho.sh
echo $*’#’
我们可以手动将三个参数arg1,arg2,arg3传给cecho.sh
那如何利用xargs呢?
$ cat args.txt
args1
args2
args3
每次执行一次参数:
$cat args.txt | xargs -n 1 ./cecho.sh
args1 #
args2 #
args3 #
每次执行两个参数:
$cat args.txt | xargs -n 2 ./cecho.sh
args1 args2 #
args3 #
全部执行:
$cat args.txt | xargs ./cecho.sh
args1 args2 args3 #
假如我们需要参数中有的参数是可变的,有的是不可变的怎么办?
例如我们希望输出格式如下:
./cecho.sh www arg1 xxoo
其中www和xxoo是不可变的,arg1是可变的。
$cat args.txt | xargs -I {} ./cecho.sh www {} xxoo
www arg1 xxoo
www arg2 xxoo
www arg3 xxoo
-I {} 指定了替换字符串。使用-I时,命令就像是在一个循环中一样,有几个参数就会执行几次。
find与xargs结合
$find . type f -name “*.txt” -print | xargs rm -f
找出后缀.txt的文件并删除
但是这样做很危险,因为我们不知道find的分割符是什么?是’\n’还是“ ” 。
(例如 hell text.txt会被xargs误认为是hell 和 text.txt)
这是我们就需要利用 -print0与find进行结合。以保证文件文件间是以null间隔的。
$find . type f -name “*.txt” -print0| xargs -0 rm -f
统计源代码目录下C程序文件的行数
$ find C_path -type f -iname “*.c” -print0 | xargs -0 wc -l
- 【linux命令】单行命令利器——xargs
- Linux 命令——xargs 详解
- linux命令详解——xargs
- Linux命令(1)——xargs命令
- linux命令: xargs
- Linux中的xargs命令
- Linux xargs命令
- linux命令 xargs 详解
- Linux xargs命令
- Linux xargs命令
- Linux xargs命令
- Linux xargs命令 小结
- Linux xargs命令
- Linux xargs命令
- Linux命令xargs+cut
- Linux xargs命令
- linux --- 命令 --- xargs 用法
- Linux xargs命令
- 【linux脚本】bash中的循环
- 【linux脚本】比较与测试
- 【linux命令】script&&scriptreplay
- linux 命令行 笔记
- 【linux命令】文件查找
- 【linux命令】单行命令利器——xargs
- 【linux命令】tr命令
- memcpy和memmove的区别。。
- 【linux命令】校检和&&核实
- 591 - Box of Bricks
- 小小总结-----Hibernate总结
- __declspec(dllexport) & __declspec(dllimport)
- 【linux命令】排序、单一与重复
- Makefile自动化变量