圧縮されていない場合でもzcat出力テキストを作成できますか? [コピー]

圧縮されていない場合でもzcat出力テキストを作成できますか? [コピー]

問題は、いくつかのデータベースダンプが圧縮されているか、プレーンテキストであることです。ファイル拡張子などは何の違いもありません。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 -fzcat.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

関連情報