Linux-xargs

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命令行参数处理


********************************************************************

你可能感兴趣的:(Linux-c基础)