linux shell xargs怎么用

linux shell xargs怎么用,第1张

xargs命令一般后面接另一个命令,它的作用是产生后面那个命令的参数。xargs读入标准输入(一般是管道)的数据,以空格符作为分割,将标准输入的数据分割成参数,并用参数去调用后面跟的那个命令。

xargs的最主要应用场景是用于一些不支持管道的命令,还有根据某个文件的数据作为某个命令的参数这样的场景。例如这样的命令:

find /home -user myusername |ls -l

因为ls并不是支持管道的命令,所以这条命令的结果不会是正确的结果,所以这时可以这样使用xargs:

find /home -user myusername |xargs ls -l

xargs 是给命令传递参数的一个过滤器,也是组合多个命令的一个工具,它能够捕获一个命令的输出,然后传递给另外一个命令。之所以会用到这个命令,关键是由于 很多命令不支持管道来传递参数 ,而日常工作中就有这个需要,所以就有了 xargs 命令。

我们经常会用grep命令在文件中查找需要的内容,比如现在一个文件夹里面有9个文件,有三种格式txt, csv和gz压缩文件。

123里面存的内容都一样为

456里面存的内容也一样为

789里面存的都是

如果我现在要从所有的文件里面找“apple”

我会得到下面的结果,你会发现 grep不能从gz文件中查找内容

zgrep 这个命令可以解决这个问题,这样就不需要先解压然后再去查找了

会得到如下结果,显示了所有文件格式中找到的“apple”,并且显示了匹配的行号

如果只想在符合某种特征的文件中找你感兴趣的内容呢?比如在文件名中包含123的文件中查找“apple”。这时候就需要管道了,你需要先找到这样的文件然后再从中找“apple”

第一步找到名字中包含123的文件

会得到文件名中包含123的所有文件

第二步查找“apple”

然后我们再来从中找“apple”,你会发现下面这条命令不work,你啥都得不到

这就是我们开篇提到的, 很多命令不支持管道来传递参数。 这个时候 xargs 就派上用场了

同时用上 zgrep ,这样gz文件也一起找了

那么,如果我们想从某一种特定格式的文件中(比如csv文件)找特定的内容该怎么做呢?大家应该能触类旁通,举一反三了吧!

Linux xargs grep zgrep命令​


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7133818.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-02
下一篇 2023-04-02

发表评论

登录后才能评论

评论列表(0条)

保存