Linux 命令速查
压缩备份 man zgrep

zgrep

在压缩文件中搜索文本

返回

补充说明

zgrep 是 gzip 套件提供的脚本,先解压文件再把内容交给 grep,因此无需手动 zcat | grep。它支持 gzip 压缩文件,许多实现也能识别 bzip2、xz、lzma 等格式。除自身少量选项外,其余参数原样传给 grep。

用法与 grep 基本一致:可以搜索单个或多个文件,输出匹配行;使用 -l 只列出匹配的文件名,-c 统计匹配行数,-i 忽略大小写。压缩文件没有扩展名时,zgrep 仍会尝试按内容识别。

搜索日志归档时非常实用,例如在 /var/log/*.gz 中查找错误。注意 zgrep 不会修改文件,也不会递归目录(除非底层版本另外支持);需要遍历目录时可配合 find 和 xargs。

语法

zgrep [grep选项] 模式 [文件...]

选项

  • -i:忽略大小写。
  • -c:只输出每个文件的匹配行数。
  • -l:只输出包含匹配的文件名。
  • -n:显示匹配行的行号。
  • -v:输出不匹配的行。
  • -E:使用扩展正则表达式。
  • -F:按固定字符串匹配。
  • -e 模式:显式指定模式,适合以 - 开头的模式。

实例

# 在单个压缩日志中搜索错误
zgrep -i error /var/log/syslog.1.gz

# 在多个归档中搜索并显示文件名
zgrep -H "timeout" /var/log/*.gz

# 只列出包含匹配的文件
zgrep -l "Out of memory" /var/log/*.gz

# 统计匹配行数
zgrep -c "Failed password" /var/log/auth.log.*.gz

# 配合 find 搜索所有压缩日志
find /var/log -name '*.gz' -exec zgrep -l 'panic' {} +

# 使用扩展正则
zgrep -E 'error|failed|denied' app.log.gz

参考链接