Bagaimana cara cepat mengekstrak semua jenis file yang diarsipkan dari command-line?

11

Sering kali saya perlu mengekstrak berbagai jenis file yang diarsipkan menggunakan commad-line. Tetapi tidak selalu saya ingat perintah yang tepat untuk semua jenis arsip file. Jadi, saya harus membuang waktu dan mencari lagi. Bagaimana saya bisa menghindari ini?

Radu Rădeanu
sumber
1
Lihat juga atool, dengan mana Anda dapat mengekstrak / mengemas banyak format: lihat jawaban yang saya berikan untuk pertanyaan ini: command-line-archive-manager-extracter . Pertanyaan ini juga merupakan duplikat dari pertanyaan itu, jadi mereka mungkin harus digabung.

Jawaban:

15

The dtrxperintah adalah teman Anda tentang hal itu.

Ini mengompres file arsip apa pun dengan menebak jenisnya. Ini juga akan memastikan file yang Anda buka kompres akan diletakkan di direktori baru; menghindari mengacaukan direktori saat ini bekerja dengan banyak file.

Install

sudo aptitude install dtrx

Pemakaian

dtrx stuff.zip
Thomasleveil
sumber
11

Anda dapat menggunakan skrip shell berikut (saya menamainya extractdan memasukkannya ~/bin):

#! / bin / bash

if [$ # -lt 1]; lalu
  echo "Penggunaan:` basename $ 0` FILES "
  keluar 1
fi

# Saya menemukan fungsi berikut di https://unix.stackexchange.com/a/168/37944 
# yang saya sedikit perbaiki. Banyak terima kasih kepada sydo untuk ide ini.
ekstrak () {
    untuk arg dalam $ @; melakukan
        jika [-f $ arg]; kemudian
            case $ arg in
                * .tar.bz2) tar xjf $ arg ;;
                * .tar.gz) tar xzf $ arg ;;
                * .bz2) bunzip2 $ arg ;;
                * .gz) gunzip $ arg ;;
                * .tar) tar xf $ arg ;;
                * .tbz2) tar xjf $ arg ;;
                * .tgz) tar xzf $ arg ;;
                * .zip) unzip $ arg ;;
                * .Z) uncompress $ arg;
                * .rar) rar x $ arg ;; # 'rar' harus diinstal
                * .jar) jar -xvf $ arg ;; # 'jdk' harus diinstal
                *) echo "'$ arg' tidak dapat diekstraksi melalui ekstrak ()";
            esac
        lain
            gema "'$ arg' bukan file yang valid"
        fi
    selesai
}

ekstrak $ @

Jangan lupa untuk membuat skrip dapat dieksekusi:

chmod +x ~/bin/extract

Pemakaian:

ekstrak file_1 file_2 ... file_n 
Radu Rădeanu
sumber
Bagus Saya menemukan bahwa zip kadang-kadang mengekstrak ke direktori saat ini, ketika saya menginginkannya subdirektori sendiri. Menggunakan unzip -d basename $argmungkin membantu.
perajin