是否有一个常用的 Linux 实用程序,可以根据文件是否被压缩来获取文件列表并cat
或gzip -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
其行为将类似cat
或gunzip -c
,并且不会分页输出。
答案2
您正在寻找的“更通用的解决方案”是训练您的手指打字,而不是试图在和zcat -f …
之间来回翻转。 zcat
cat
顺便一提:
zgrep
将搜索压缩和未压缩的文件,无需附加标志。bzcat -f
行为类似于zcat -f
- 两者都将简单地输出(不解压缩)不是其原始压缩格式的文件,而不是理解它是不同的压缩格式并分叉正确的解压缩程序。