Làm cách nào để nhanh chóng trích xuất tất cả các loại tệp lưu trữ từ dòng lệnh?


11

Nhiều lần tôi cần trích xuất các loại tệp lưu trữ khác nhau bằng cách sử dụng đường truyền. Nhưng không phải lúc nào tôi cũng nhớ lệnh chính xác cho bất kỳ loại lưu trữ tệp nào. Vì vậy, tôi phải lãng phí thời gian và tìm kiếm lại. Làm thế nào tôi có thể tránh điều này?


1
Xem thêm atool, trong đó bạn có thể trích xuất / đóng gói nhiều định dạng: xem câu trả lời tôi đã đưa ra cho câu hỏi này: lệnh-line-archive-manager-extracter . Câu hỏi này cũng là một bản sao của câu hỏi đó, vì vậy có lẽ chúng nên được hợp nhất.

Câu trả lời:


15

Các dtrxlệnh là bạn của bạn về vấn đề đó.

Nó giải nén bất kỳ tập tin lưu trữ nào bằng cách đoán loại của nó. Nó cũng sẽ đảm bảo các tệp bạn giải nén sẽ được đặt trong một thư mục mới; tránh làm rối các thư mục làm việc hiện tại với hàng tấn tệp.

Tải về

sudo aptitude install dtrx

Sử dụng

dtrx stuff.zip

11

Bạn có thể sử dụng tập lệnh shell sau (tôi đặt tên cho nó extractvà tôi đặt nó vào ~/bin):

#! / bin / bash

nếu [$ # -lt 1]; thì
  echo "Cách sử dụng:` tên cơ sở $ 0` PHIM "
  thoát 1
fi

# Tôi đã tìm thấy chức năng sau tại https://unix.stackexchange.com/a/168/37944 
# mà tôi đã cải thiện nó một chút. Rất cám ơn sydo cho ý tưởng này.
trích xuất () {
    cho arg trong $ @; làm
        nếu [-f $ arg]; sau đó
            trường hợp $ arg trong
                * .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) giải nén $ arg ;;
                * .Z) giải nén $ arg ;;
                * .rar) rar x $ arg ;; # 'rar' phải được cài đặt
                * .jar) bình -xvf $ arg ;; # 'jdk' phải được cài đặt
                *) echo "'$ arg' không thể được trích xuất thông qua trích xuất ()" ;;
            esac
        khác
            echo "'$ arg' không phải là tệp hợp lệ"
        fi
    làm xong
}

trích xuất $ @

Đừng quên làm cho tập lệnh thực thi:

chmod +x ~/bin/extract

Sử dụng:

giải nén file_1 file_2 ... file_n 

Đẹp một. Tôi thấy rằng zip đôi khi trích xuất vào thư mục hiện tại, khi tôi muốn nó thư mục con của riêng nó. Sử dụng giải nén -d basename $argcó thể giúp đỡ.
crafter
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.