用于 cat/gunzip 文件列表的实用程序

用于 cat/gunzip 文件列表的实用程序

是否有一个常用的 Linux 实用程序,可以根据文件是否被压缩来获取文件列表并catgzip -d(== )它们?zcat

举个例子,当我想要检查/var/log/messages文件时,包括经过 logrotated 的文件(/var/log/messages-{date}.gz)和当前文件,我就需要这个功能。

我可能会添加类似以下内容到我的~/.zshrc

catz () {
    local file
    for file ; do
        case $file in
            *gz*) gzip -d < $file ;;
            *bz*) bzip -d < $file ;;
            *xz*|*lz*) xz -d < $file ;;
            *) cat $file ;;
        esac
    done
}

但是,我并不总是在安装了 rc 的机器上,所以我希望有一个更通用的解决方案。

答案1

less是那样的。

less /var/log/messages*

如果通过管道将输出传送less到另一个程序,less其行为将类似catgunzip -c,并且不会分页输出。

答案2

您正在寻找的“更通用的解决方案”是训练您的手指打字,而不是试图在和zcat -f …之间来回翻转。 zcatcat

顺便一提:

  • zgrep将搜索压缩和未压缩的文件,无需附加标志。
  • bzcat -f行为类似于zcat -f- 两者都将简单地输出(不解压缩)不是其原始压缩格式的文件,而不是理解它是不同的压缩格式并分叉正确的解压缩程序。

相关内容