linux xargs命令的使用及其与exec、管道的区别
1、作用:
(1)将前一个命令的标准输出传递给下一个命令,作为它的参数,xargs的默认命令是echo,空格是默认定界符
(2)将多行输入转换为单行
2、使用模式:front command | xargs -option later command
front command: 前一个命令
-option: xargs的选项
later command: 后一个命令
3、xargs常用选项
-n: 指定一次处理的参数个数
-d: 自定义参数界定符
-p: 询问是否运行 later command 参数
-t : 表示先打印命令,然后再执行
-i : 逐项处理
...更多参数查看man xargs
4、使用实例
测试文本:xargs.txt
[python] view plain copy
[python] view plain copy
( 2)指定一次处理的参数个数:指定为5,多行输出
[python] view plain copy
(3)自定义参数界定符:指定界定符为'm'
[python] view plain copy
(4)询问是否运行 later command 参数
[python] view plain copy
(5)将所有文件重命名,逐项处理每个参数
[python] view plain copy
更多参数选项查看man xargs
5、xargs与管道|的区别
| 用来将前一个命令的标准输出传递到下一个命令的标准输入,xargs 将前一个命令的标准输出传递给下一个命令,作为它的参数。
[python] view plain copy6、xargs与exec的区别
(1)exec参数是一个一个传递的,传递一个参数执行一次命令;xargs一次将参数传给命令,可以使用-n控制参数个数
[python] view plain copy
(2)exec文件名有空格等特殊字符也能处理;xargs不能处理特殊文件名,如果想处理特殊文件名需要特殊处理
[python] view plain copy
原因:默认情况下, find 每输出一个文件名, 后面都会接着输出一个换行符 ('\n'),因此我们看到的 find 的输出都是一行一行的,xargs 默认是以空白字符 (空格, TAB, 换行符) 来分割记录的, 因此文件名 ./t t.txt 被解释成了两个记录 ./t 和 t.txt, cat找不到这两个文件,所以报错,为了解决此类问题, 让 find 在打印出一个文件名之后接着输出一个 NULL 字符 ('') 而不是换行符, 然后再告诉 xargs 也用 NULL 字符来作为记录的分隔符,即 find -print0 和 xargs -0 ,这样就能处理特殊文件名了。 [python] view plain copy
总结
以上是生活随笔为你收集整理的linux xargs命令的使用及其与exec、管道的区别的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: linux中正则表达式、find、xar
- 下一篇: Linux下ps -ef和ps aux的