Bir dosya listesi cat / gunzip yardımcı programı


2

Yaygın olarak yüklenmiş bir Linux yardımcı programı var mı, dosyaların bir listesini alacak ve catya da gzip -d(== zcat) dosyanın sıkıştırılmış olup olmadığına bağlı olarak (== )?

Sadece ihtiyacım olan yere bir örnek, /var/log/messageshem logrotated olanlar ( /var/log/messages-{date}.gz) hem de mevcut dosyalar dahil olmak üzere dosyaları incelemek istediğimde .

Muhtemelen benim için aşağıdakine benzer bir şey ekleyeceğim ~/.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
}

Ancak, her zaman rc cihazımın yüklü olduğu bir makinede değilim, bu yüzden daha genel bir çözüm umuyordum.

Yanıtlar:


2

less Bunu yapar.

less /var/log/messages*

Çıktısını lessbaşka bir programa aktarırsanız, çıktısını sayfa şeklinde lessyazdırır catya gunzip -cda oynatmaz.


Özellikle, $ LESSPIPE tarafından belirtilen herhangi bir program bunu yapar. Bu komutu daha önce denedim, dosyalar listesinde ': n' / ': p' yapmak zorunda kaldığım için sinirlenip soruyu yazdım. Bu geri dönersek, ben aslında kullanmak için gidiyorum Ne var: less /var/log/messages* | less. Teşekkürler.
benizi

1

Aradığınız "Daha genel çözüm" dışarı yazmak için parmaklarınızı yetiştirmektir zcat -f …yerine ileri geri arasında geçiş yapmak için çalışmakla zcatve cat.

Bu arada:

  • zgrep ek bir bayrak olmadan hem sıkıştırılmış hem de sıkıştırılmamış dosyaları arayacaktır.
  • bzcat -fgibi davranır zcat -f- her ikisi de farklı bir sıkıştırılmış format ve doğru dekompresyon programının altını kesmek olduğunu anlamak yerine, kendi sıkıştırma formatlarında olmayan dosyaları çıkartacaktır (açmadan).
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.