![圧縮されていない場合でもzcat出力テキストを作成できますか? [コピー]](https://linux33.com/image/37303/%E5%9C%A7%E7%B8%AE%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%81%AA%E3%81%84%E5%A0%B4%E5%90%88%E3%81%A7%E3%82%82zcat%E5%87%BA%E5%8A%9B%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%E3%82%92%E4%BD%9C%E6%88%90%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%99%E3%81%8B%EF%BC%9F%20%5B%E3%82%B3%E3%83%94%E3%83%BC%5D.png)
問題は、いくつかのデータベースダンプが圧縮されているか、プレーンテキストであることです。ファイル拡張子などは何の違いもありません。zcat
圧縮されていないファイルに使用すると、出力の代わりにエラーが発生します。
cat
入力タイプを検出するのに十分スマートな別のツールはありますか?
答え1
その-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
(GNU(または最新のBSDなどのGNUエミュレーション)ではなく、ファイルについてのみ知っている場合はgzip -dcf
代わりに使用してください。)zcat -f
zcat
.Z
答え2
zgrep
移植可能で簡単な提案は、代わりにを使用し、zcat
各行に一致する検索パターンのみを使用することです。
zgrep $ some-file
zcat
とは異なり、zgrep
圧縮されていないファイルを簡単に処理します。男zgrepから:
zgrep - search possibly compressed files for a regular expression
答え3
GNUを使用するとgzip
それを行うことができますzcat file 2> /dev/null || cat file
。これはPOSIX標準ではなく、BSDには適用されません。すべてのpedファイルが拡張子を持つようにgzip
システムを変更する必要があります(もちろん、プレーンテキストファイルにはを含むすべての拡張子があります)。gzip
.gz
.gz
答え4
Bashの他のオプション:
for filename in *;do #Replace with your actual loop
case $filename in
*.gz) gunzip <"$filename";;
*) cat "$filename";;
esac
done