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命令
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)