linux下zip文件内容查找 ,文件查找并删除

今天刚好遇到一个需要查找归档日志中的内容,归档的格式是zip,

假如是非压缩包文件,可以用grep命令去搜索,例如:  grep  "被查找的字符串" 文件名  

假如是.gz压缩包类或者是zip类,可以用zgrep命令去搜索,例如:  zgrep  "被查找的字符串" 文件名 

如果需要递归 -r  忽略大小写 -i 这些原有支持的都直接使用

查找删除:

find / -name "*.mp3" | xargs rm -rf

ls |grep % |xargs rm -rf

xargs命令是给其他命令传递参数的一个过滤器,也是组合多个命令的一个工具。它擅长将标准输入数据转换成命令行参数,xargs能够处理管道或者stdin并将其转换成特定命令的命令参数。xargs也可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行。xargs的默认命令是echo,空格是默认定界符。这意味着通过管道传递给xargs的输入将会包含换行和空白,不过通过xargs的处理,换行和空白将被空格取代。xargs是构建单行命令的重要组件之一

可以参考:https://www.cnblogs.com/f-ck-need-u/p/5925923.html

另一个 exec

find命令的-exec参数
xargs:通过缓冲方式并以前面命令行的输出作为参数,随后的命令调用该参数
若忽略 xargs 的 options 来看的话,
cm1 | xargs cm2
可以单纯看成: cm2 `cm1`
因此, find .... | xargs rm 也可作 rm `find ...` 来处理.
然而, 若 find 的结果太多, 可能会超过rm 可能接受的最大argument数量而失败.
xargs优点:由于是批处理的,所以执行效率比较高(通过缓冲方式)
xargs缺点:有可能由于参数数量过多(成千上万),导致后面的命令执行失败
若换成 find .... -exec   rm {} \; 的话, 
因为rm 是" 逐个 " item 去处理的, 则无此忧虑

 可以参考:https://my.oschina.net/leopardsaga/blog/112335



猜你喜欢

转载自blog.csdn.net/zouheliang/article/details/80028846