ファイルのリストをcat / gunzipするためのユーティリティ


2

ファイルのリストを取得する一般的にインストールされた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がインストールされているマシンにいつもいるわけではないので、もっと一般的な解決策を望んでいました。

回答:


2

less それをします。

less /var/log/messages*

の出力をパイプすると less 他のプログラムへ less のように振る舞う cat または gunzip -c 出力をページングしません。


具体的には、$ LESSPIPEで指定されたプログラムはすべてそれを行います。私は以前にその正確な命令を試みました、ファイルのリストを通して ':n' / ':p'をしなければならないことにいらいらして、質問を書きました。これに戻って、私が実際に使用しようとしているものを手に入れました: less /var/log/messages* | less。ありがとう。
benizi

1

あなたが探している「もっと一般的な解決策」は、タイプアウトするように指を訓練することです zcat -f … の間で行ったり来たりしようとする代わりに zcat そして cat

ところで:

  • zgrep 追加フラグなしで、圧縮ファイルと非圧縮ファイルの両方を検索します。
  • bzcat -f のように振る舞う zcat -f - 両方とも、圧縮形式が異なることを理解して正しい解凍プログラムをサブフォークするのではなく、ネイティブの圧縮形式ではないファイルを(解凍せずに)単に出力するだけです。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.