Üniversal aspiratörler


19

Bir ile artan sayıda arşiv / sıkıştırma dosya biçimleri, hepsini kural tek bir serbest / açık kaynak komut satırı aracı var mı? Belki tutarlı / birleşik bayraklar kümesi olan bir şey? ( katranla ilgili samimi örtük referansımı not et )

Bir zamanlar, dosyaları tarve diğer yardımcı programlarla dosyaları sıkıştırma / sıkıştırmayı kaldırma görevini büyük ölçüde basitleştirmeyi amaçlayan bir takma ad kümesiyle karşılaştım , ancak artık bulamıyorum.

Güncelleme: Zip dosyalarını ayıklamak için (görünüşte 4GB'den büyük dosyaları işleyemeyen) ve bunun yerine atoolkullanmak gibi bir şeyi nasıl yapılandırabilirim ?unzipgunzip

$ aunpack large_file.zip
error:  Zip file too big (greater than 4294959102 bytes)
Archive:  large_file.zip
warning [large_file.zip]:  1491344848 extra bytes at beginning or within zipfile
  (attempting to process anyway)
error [large_file.zip]:  start of central directory not found;
  zipfile corrupt.
  (please check that you have transferred or created the zipfile in the
  appropriate BINARY mode and that you have compiled UnZip properly)
aunpack: unzip ...: non-zero return-code


@frostschutz. unpackFarklı olabilecek bir şey olup olmadığını biliyor musunuz atool?
Amelio Vazquez-Reina

Dunno. Evan'ın cevabının gösterdiği gibi, böyle bir program oldukça önemsizdir. Sizin için uygun olanı kullanın. Zip dosyalarını açmak için kişisel tercihim 7z.
frostschutz

1
@ user815423426 Güncellenmiş sorunuza mevcut cevabım için talimatlar ekledim.
SuperMagic

Yanıtlar:


18

Ben atool kullanıyorum . İşi yapıyor. Tüm biçimlerde olmasa da, birçok ile çalışır:

katran, gzip, bzip2, bzip, lzip, lzop, lzma, zip, rar, lha, arj, ark, p7zip vb.

Bu sıkıştırma araçlarına hala ihtiyaç vardır, çünkü atool sadece onlar için bir ön uçtur.

Özellikle, alsdesteklenen herhangi bir arşiv formatının içeriğini listeleyen komutu beğendim .

Ana atoolkomut, arşivleri çıkarmak için kendi bayraklarını kullanır (uygun bayrakları belirli temel çıkarma araçlarına geçirir).

Oh, ve bazı dağıtımların depolarında (benim durumumda Fedora, hatırladığım gibi, Ubuntu'yu kullandığımda o zaman depolarında değildi. Ve bir tarball'dan kurdum.).

Depolarda Güncelleme : atool aşağıdaki dağıtımların depolarındadır (yalnızca geçerli sürümler kontrol edilir):

  • fötr şapka
  • Debian (teşekkürler @terdon ve muhtemelen Ubuntu gibi türevler)
  • Ubuntu (qed ve muhtemelen Mint gibi türevler)
  • Açık Suse
  • CentOS (ve muhtemelen RHEL)
  • Arch Linux

Eminim başkaları da vardır ... akla yatkın, en modern dağıtımlar.

Güncellenmiş Soru için Cevap "Nasıl atool gibi bir şey zip dosyaları ayıklamak için unzip kullanmamak ve bunun yerine gunzip kullanmak için nasıl yapılandırabilirim" :

Araç yapılandırma dosyasını düzenleyin ~/.atoolrcve satırı ekleyin:

path_unzip /usr/bin/gunzip

gunzip programınıza doğru yol ile.

Var olan bu yapılandırma dosyasında koyabilirsiniz olası değişkenler tam listesi için man sayfasına bakın bir sürü . Gunzip için gerekli komut satırı seçenekleri unzip'ten farklıysa, atool kaynağının (perl) kendisini değiştirmeniz gerekebilir.


Teşekkürler. Harika görünüyor. Tarball'ı indirmenin yanı sıra, bunun için veya belki de bir çatal için (git / bzr) deposu olup olmadığını biliyor musunuz?
Amelio Vazquez-Reina

Bunun için bir git repo yok gibi görünüyor. Bir ürperti, cvs repo var: savannah.nongnu.org/cvs/?group=atool . Bununla birlikte, kaynak tarball'dadır ve araç perl'de yazılmıştır, sizin veya dürtü hisseden herkes tarafından kolayca değiştirilebilir.
SuperMagic

1
@ user815423426 da Debian depolarındadır.
terdon

9

İşte birkaç arşiv türüyle ilgilenen küçük bir kabuk işlevi.

extract () {
    if [ ! -f "$1" ] ; then
        echo "'$1' does not exist."
        return 1
    fi

    case "$1" in
        *.tar.bz2)   tar xvjf "$1"   ;;
        *.tar.xz)    tar xvJf "$1"   ;;
        *.tar.gz)    tar xvzf "$1"   ;;
        *.bz2)       bunzip2 "$1"    ;;
        *.rar)       rar x "$1"      ;;
        *.gz)        gunzip "$1"     ;;
        *.tar)       tar xvf "$1"    ;;
        *.tbz2)      tar xvjf "$1"   ;;
        *.tgz)       tar xvzf "$1"   ;;
        *.zip)       unzip "$1"      ;;
        *.Z)         uncompress "$1" ;;
        *.xz)        xz -d "$1"      ;;
        *.7z)        7z x "$1"       ;;
        *.a)         ar x "$1"       ;;
        *)           echo "Unable to extract '$1'." ;;
    esac
}

Bu işlevin orijinal sürümünü çevrimiçi bir yerde buldum ve ararşivleri ve xz sıkıştırılmış tararşivleri ayıklamak için biraz değiştirdim .


Harika görünüyor. Bu bash için mi?
Amelio Vazquez-Reina

Bunu sadece bashve ile test ettim zsh, ama shaynı zamanda işe yaramalı.

Bu, kabuk işlevi için son derece estetiktir. Bir uyarı, ilgili tüm ikili dosyaları yüklediğinizden emin olmak veya yüklemediğinizler için satırları kaldırmak isteyeceğinizdir.
bgvaughan

3

AVF'lerin dosya sistemi hediyeler her arşiv dosyası (örneğin dosya sisteminin bir görünüm /path/to/foo.zip() bir dizin olarak erişilebilir ~/.avfs/path/to/foo/zip#bu örneğin). AVFS, en yaygın arşiv dosyası biçimlerine salt okunur erişim sağlar.

mountavfs
cp -Rp ~/.avfs$PWD/large_file.zip\# extraction_directory

Avfs, dosyaları düzenleyerek kolayca yapılandırılabilen harici yardımcılar kullanır /usr(maalesef avfs 1.0'dan itibaren /usr/localana dizininizdeki veya dizininizdeki dosyaları kullanmanın bir yolu yoktur , dosyaları düzenlemeniz /usrveya yeniden derlemeniz gerekir). dosyaları /usr/share/avfs/extfs/ext-uzipile uğraşmak için komut .zipdosyası, kullanmak istemiyorsanız değiştirin /usr/bin/unzip. Bunun yerine 7z'yi kullanarak kurtulabilirsiniz: düzenlemeyi deneyin /usr/share/avfs/extfs/extfs.inive satırı ext-uzipolarak değiştirin u7z .zip.

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.