Linux 下 xargs 命令 (2)

有时用户会输入多个参数,-n 选项是每次将一行中的多少个参数作为命令行参数

[tt@ecs-centos-7 tmp]$ echo "a b c d e f" | xargs -n 2 a b c d e f [tt@ecs-centos-7 tmp]$ echo "a b c d e f" | xargs -n 4 a b c d e f [tt@ecs-centos-7 tmp]$

命令 echo "a b c d e f" | xargs -n 2 指定每2个参数作为一次命令的输出,所以 a b c d e f 6个参数输出了3行

同样的,命令 echo "a b c d e f" | xargs -n 4 指定每4个参数作为一次输出,所以 a b c d e f 6个参数输出2行,而且第2行只有两个参数

实例7 -r 选项

此选项表示,当输入不包含非空格时,不执行命令,默认情况下,不管输入是否包含非空格时,都会执行命令

有些命令必须要有操作数,如果输入不包含任何参数时,执行这些命令会有缺少操作数的错误提示,可以加上 -r 选项就不会出现错误提示了

[tt@ecs-centos-7 tmp]$ echo '' | xargs rm rm: 缺少操作数 Try 'rm --help' for more information. [tt@ecs-centos-7 tmp]$ echo '' | xargs -r rm [tt@ecs-centos-7 tmp]$

上面的例子中,命令 echo ''的结果作为输入传给管道右边的 xargs rm ,经过参数转化,xargs rm 没有任何参数,所以执行 rm 命令时会提示缺少操作数,但是 xargs -r rm 命令是不会执行的,所以它不会有错误提示

实例8 -I 参数

-I 参数表示命令行参数的每一项参数的变量

[tt@ecs-centos-7 tmp]$ ls a b c [tt@ecs-centos-7 tmp]$ ls | sort | xargs -I F sh -c 'echo F.txt; touch F.txt' a.txt b.txt c.txt [tt@ecs-centos-7 tmp]$ ls a a.txt b b.txt c c.txt

上面例子中,当前目录有 a b c 三个文件

命令 ls | sort | xargs -I F sh -c 'echo F.txt; touch F.txt' 的输入分别是 a、b、c,
-I F表示 F 是输入参数的替代字符串,执行命令的时候,后面命令 echo F.txt; touch F.txt 中的 F 会被实际的参数替换掉,实际会执行下面几条命令

echo a.txt; touch a.txt echo b.txt; touch b.txt echo c.txt; touch c.txt 小结

本文介绍了 xargs 命令的常见用法,常用的选项都有实例说明,更多关于 xargs 命令的用法请查阅命令文档

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwgdgf.html