xargs:
是一条 Unix 和类 Unix 操作系统的常用命令;
作用是将参数列表转换成小块分段传递给其他命令,以避免参数列表过长的问题。可单独使用,也可使用管道符、重定位符等与其他命令配合使用;
使用:
1.对于大量文件删除(文件夹为d 普通文件为f 文件夹删除为rm -rf)
rm * -rf 或者rm find /path -type f 会报错参数列表过长无法删除
find /path -type f -print0 | xargs -0 rm **************xargs将find产生的长串文件列表拆散成多个子串,然后对每个子串调用rm;
find /path -type f -exec rm '{}' \; **********对每个子串调用rm;
find /path -type f -exec rm '{}' +; **********对每个子串调用rm;
find /path -type f -name xxx -print0 | xargs -0 rm -f ****删除xxx
find . -type f -name "*.php" -print0 | xargs -0 wc -l ****统计行数
find . -type f -name "*.jpg" -print | xargs tar -czvf images.tar.gz *****打包所有jpg文件为tar包
2.单行输出:cat test.txt | xargs
3.多行输出:cat test.txt | xargs -n3 ***每行显示3个单词或者数字
4.边界定义:echo "nameXnameXnameXname" | xargs -dX ***打印出来去掉X
5.组合使用:echo "nameXnameXnameXname" | xargs -dX -n2 ***打印出来去掉X后每行两个显示
6.字符保存:cat 1.txt | xargs -I {} echo $* {} ***读取到txt中的内容保存到{}中再打印出来
7.复制操作:ls *.jpg | xargs -n1 -I cp {} /data/images ***复制所有jpg到 /data/images
8.确认操作:cat test.txt | xargs -p *****不能立马执行cat命令 有确认动作需要输入y
********************************************************************
linux命令可以从两个地方读取要处理的内容,一个是通过命令行参数,一个是标准输入:如cat grep
1.echo "main" 打印main 标准输入
2.echo "main" | cat 打印main echo的标准输出通过管道传给cat的标准输入 cat一个txt txt里存的标准输入main
3.echo "main" | cat - 打印main -指定从标准输入中读取
4.echo "main" | cat 1.c 打印c文件里的内容 命令行参数读取并不能读取echo传来的标准输入没加-说明
4.echo "main" | cat 1.c - 打印c文件里的内容和main字符串
5.echo "main" | grep "main" 1.c 打印c文件里的内容
6.echo "main" | grep "main" 1.c - 打印c文件里的内容和main字符串
7.echo "main" | xargs cat 打印cat: main: No such file or directory xargs将main作为cat命令行参数处理
********************************************************************