zcatとcatを透明に組み合わせるツールはありますか?

zcatとcatを透明に組み合わせるツールはありますか?

ログファイルを処理すると、一部はgzipファイルに圧縮されますが、logrotate一部はそうではありません。したがって、次のことを試してみると:

$ zcat *

次のコマンドラインが作成され、zcat xyz.log xyz.log.1 xyz.log.2.gz xyz.log.3.gzその後に次のように表示されます。

gzip: xyz.log: not in gzip format

fileこれがどのように機能するかと同様に、マジックバイトを取得し、結果を使用またはzcat依存して出力をパイプするためのツールがありますか?catgrep

注:スクリプトを書くことができることを知っていますが、そのためのツールがすでにあるかどうかを尋ねたいと思います。

ベストアンサー1

-fまたは、以下を試してください--force

zcat -f -- *

zcat単に実行される単純なスクリプトだからです。

exec gzip -cd "$@"

長いオプションを次のように変換できます。

exec gzip --stdout --decompress "$@"

man gzipそして(強調)によると:

-f--強制
      ファイルに複数のリンクがある場合でも、強制圧縮または解凍
      そのファイルがすでに存在するか圧縮されたデータ
      端末から読み込むか、端末に書き込みます。入力データが特定の形式ではない場合
      --stdout オプションも指定すると、gzip として認識されコピーされます。
      標準出力を変更せずにデータを入力します。zcatが猫のように振る舞う

返品:

これにより、出力をgrepパイプすることができます。

あなたはそれを使用することができますzgrep

zgrep -- PATTERN *

しかし、以下のStéphaneのコメントを参照してください。

おすすめ記事