问题是我有一些压缩或纯文本的数据库转储。文件扩展名等没有区别。zcat
在未压缩的文件上使用会产生错误而不是输出。
是否有另cat
一种足够智能的工具可以检测它获得的输入类型?
Sté*_*las 26
只需添加-f
选项。
$ echo foo | tee file | gzip > file.gz
$ zcat file file.gz
gzip: file: not in gzip format
foo
$ zcat -f file file.gz
foo
foo
Run Code Online (Sandbox Code Playgroud)
(如果您不是 GNU(或像现代 BSD 中的 GNU 模拟)并且只知道文件gzip -dcf
,zcat -f
则使用代替)。zcat
.Z
god*_*eek 10
一个可移植的简单建议是使用zgrep
而不是zcat
,并且只使用匹配每一行的搜索模式。
zgrep $ some-file
Run Code Online (Sandbox Code Playgroud)
与zcat
,zgrep
将愉快地处理未压缩的文件。来自人 zgrep:
zgrep - search possibly compressed files for a regular expression
Run Code Online (Sandbox Code Playgroud)
使用 GNU,gzip
您可以做到zcat file 2> /dev/null || cat file
。这不是 POSIX 标准,也不适用于 BSD gzip
,您确实应该修复您的系统,以便所有gzip
ped 文件都有.gz
扩展名(当然纯文本文件可能有任何扩展名,包括.gz
)。