可以用管道将一个命令的stdout(标准输出)重定向到另一个命令的stdin(标准输入)。例如:

[root@localhost Test]# cat sh1.3.sh | grep fruit

但是,有些命令只能以命令行参数的形式接受数据,而无法通过stdin接受数据流。在这种情况下,我们没法用管道来提供那些只有通过命令行参数才能提供的数据。那就只能另辟蹊径了。该xargs命令出场了,它擅长将标准输入数据转换成命令行参数。xargs能够处理stdin并将其转换为特定命令的命令行参数。xargs也可以将单行或多行文本输入转换成其他格式,例如单行变多行或是多行变单行。

find /sbin -perm +700 |ls -l       这个命令是错误的

find /sbin -perm +700 |xargs ls -l   这样才是正确的

xargs 可以读入 stdin 的资料,并且以空白字元或断行字元作为分辨,将 stdin 的资料分隔成为 arguments 。 因为是以空白字元作为分隔,所以,如果有一些档名或者是其他意义的名词内含有空白字元的时候, xargs 可能就会误判了~他的用法其实也还满简单的!就来看一看先!

xargs命令应该紧跟在管道操作符之后,以标准输入作为主要的源数据流。它使用stdin并通过提供命令行参数来执行其他命令。

xargs命令把从stdin接收到的数据重新格式化,再将其作为参数提供给其他命令。xargs可以作为一种替代,其作用类似于find命令中的 -exec。下面是各种xargs命令的使用技巧。

1、多行输入转换成单行输出

[root@localhost Test]# cat exam.txt
#!/bin/bash
1 2 3 4 5
6 7
8
[root@localhost Test]# cat exam.txt | xargs

2、将单行输入转换成多行输出

[root@localhost Test]# vim exam.txt
[root@localhost Test]# cat exam.txt | xargs -n 3
#!/bin/bash 1 2
3 4 5
6 7 8

现在来看看xargs使用的选项参数

xargs  [-0prtx]  [-E  eof-str]  [-e[eof-str]] [--eof[=eof-str]] [--null] [-d delimiter] [--delimiter delimiter] [-I replace-str] [-i[replace-str]][--replace[=replace-str]]  [-l[max-lines]]  [-L  max-lines]  [--max-lines[=max-lines]]  [-n   max-args]   [--max-args=max-args]   [-s   max-chars][--max-chars=max-chars]   [-P  max-procs]  [--max-procs=max-procs]  [--interactive]  [--verbose]  [--exit]  [--no-run-if-empty]  [--arg-file=file][--show-limits] [--version] [--help] [command [initial-arguments]]

-a 从文件中读入而不是标准输入中读取

[root@localhost Test]# vim test.txt
[root@localhost Test]# cat test.txt
aa bb cc dd
ee ff gg
[root@localhost Test]# xargs -a test.txt
aa bb cc dd ee ff gg

-0 当输入有特殊字符时,将其作为一般的字符处理,如有空格

[root@localhost Test]# echo "//" | xargs
//
[root@localhost Test]# echo "//" | xargs -0

-d 指定分隔符

[root@localhost Test]# cat test.txt
aa bb cc dd
ee ff gg
[root@localhost Test]# cat test.txt | xargs -d "c"

-E eof-str ,指定结束标志为eof-str,xargs处理到这个标志就会停止

[root@localhost Test]# cat test.txt
aa bb cc dd
ee ff gg
[root@localhost Test]# xargs -E "dd" -a test.txt
aa bb cc
[root@localhost Test]# cat test.txt | xargs -E "dd"
aa bb cc

-L max-lines: 每次读取max-line行输入交由xargs处理

[root@localhost Test]# cat test.txt
aa bb cc dd
ee ff gg
[root@localhost Test]# cat test.txt | xargs -L 2
aa bb cc dd ee ff gg

-l: 类似于-L,区别在于-l可以不指定参数,默认为1.

-n max-args: 每行执行max-args个输入,默认执行所有

[root@localhost Test]# cat test.txt | xargs -n 2
aa bb
cc dd
ee ff
gg

-t: 先打印执行的命令,然后执行

[root@localhost Test]# cat test.txt | xargs -t
/bin/echo aa bb cc dd ee ff gg
aa bb cc dd ee ff gg

-I  replace-str : 将每行输入内容替换为 replace-str

[root@localhost Test]# cat test.txt  | xargs -t -I {} echo {} >> test.txt
echo aa bb cc dd
echo ee ff gg

Linux之xargs相关推荐

  1. Linux find xargs rm .orig

    /********************************************************************** Linux find xargs rm .orig* 声 ...

  2. linux 命令xargs,Linux下xargs命令详解

    Linux下xargs命令详解 1. 简介   之所以能用到这个命令,关键是由于很多命令不支持|管道来传递参数,而日常工作中有有这个必要,所以就有了xargs命令,例如: find /sbin -pe ...

  3. linux之xargs详解

    xargs 是给命令传递参数的一个过滤器,也是组合多个命令的一个工具. xargs 可以将管道或标准输入(stdin)数据转换成命令行参数,也能够从文件的输出中读取数据. xargs 也可以将单行或多 ...

  4. linux中xargs用法,Linux中xargs的用法

    xargs 大 多数 Linux 命令都会产生输出:文件列表.字符串列表等.但如果要使用其他某个命令并将前一个命令的输出作为参数该怎么办?例如,file 命令显示文件类型(可执行文件.ascii 文本 ...

  5. linux下xargs命令用法详解

    From:http://biancheng.dnbcw.info/shell/268829.html xargs在 linux中是个很有用的命令,它经常和其他命令组合起来使用,非常的灵活. xargs ...

  6. Linux中xargs命令的用法

    xargs(英文全拼: eXtended ARGuments)是给命令传递参数的一个过滤器,也是组合多个命令的一个工具. xargs 可以将管道或标准输入(stdin)数据转换成命令行参数,也能够从文 ...

  7. linux find xargs grep查找给定路径下目标字符串所在文件

    find roles/kafka/ |xargs grep 'groups.zookeeper' #指定文件类型 find roles/kafka/ -name "*.java"| ...

  8. linux之xargs命令用途

    实现文件删除的方法大致有以下几种: 1.rm  `find /a  -type  f ` 2.find  /a -type  f   -exec|-ok rm  -rf { } \; 3.find   ...

  9. Linux下xargs命令的使用

    2019独角兽企业重金招聘Python工程师标准>>> xargs是给命令传递参数的一个过滤器,也是组合多个命令的一个工具.它把一个数据流分割为一些足够小的块,以方便过滤器和命令进行 ...

最新文章

  1. linux分享一:网络设置
  2. python的官方网站地址是什么-python赋值和地址
  3. 【Android FFMPEG 开发】C++ 回调 Java 方法 模板 ( JavaVM *vm | JNIEnv *env | jobject instance | 引用类型 | 模板代码示例 )
  4. context:component-scan/和mvc:annotation-driven/的区别
  5. 【牛客 - 315C】排列(思维,贪心,同优则立证明法)
  6. webpack 入口文件 php,如何实现webpack多入口文件打包配置
  7. Windows下安装配置Maven
  8. dell屏幕亮度调节不了_?戴尔XPS13 7390笔电测评:10代酷睿加持,屏幕/散热/续航升级...
  9. 国产手机:跨出去之路
  10. 《开源容器云OpenShift:构建基于Kubernetes的企业应用云平台》一2.3 完善OpenShift集群...
  11. bzoj 1801: [Ahoi2009]chess 中国象棋 bzoj 4806: 炮
  12. android 把数据导入到excel文件中的三种方法
  13. 【逗老师的无线电】宝峰神机刷OpenGD77摇身变为DMR大热点
  14. 优秀logo,最基础的设计技巧(五)
  15. html页面添加遮罩层,在浏览器窗口上添加遮罩层的方法
  16. 直接插入排序算法视频
  17. 记忆中永不消逝的香椿芽儿的香味·《晚唱·贾平凹》
  18. “飞象”已露国家级工业互联网平台之像
  19. 千寻位置NTRIP网络基准站
  20. 形态学处理梯度、顶帽、黑帽

热门文章

  1. 数据量庞大的分页穿梭框实现
  2. TCP socket编程记录(C语言)
  3. hihocoder-1615-矩阵游戏II
  4. Linux上如何查看物理CPU个数,核数,线程数
  5. Mysql常用命令详解
  6. 如何解决IIS7上传文件大小限制【转】
  7. iOS - 让view触发点击事件
  8. [Linq]Linq To Xml (待整理)
  9. 转:构建高性能ASP.NET站点 第五章—性能调优综述(中篇)
  10. 文本查重:difflib.SequenceMatcher