Tôi có một bản bash nhỏ để tải xuống danh sách lưu trữ từ nhiều nguồn khác nhau. Dưới đây là ví dụ về tệp chứa danh sách:
http://this-is-url1/url1.tar.gz
http://www.this-is-url2/url2.tar.bz2
http://this-is-url3/url3.tar.bz2
http://this-is-url4/url4.tar.gz
http://this-is-the-last-url/url.tar.xz
Tôi tải tập tin bằng cách sử dụng:
for i in `cat d_list.txt`;
Trong đó "d_list" là tên của tệp văn bản ở trên. Bây giờ, tôi cũng muốn sử dụng cùng một tệp để giải nén tệp. Để trích xuất tên tệp, tôi đã sử dụng bash với phần mở rộng tham số như thế này:
đối với tôi trong `cat d_list.txt`;
Nhưng như bạn có thể thấy, các kiểu nén tệp khác nhau. tôi đã cài đặt bzip2
,công cụ xz
v.v., vậy câu hỏi của tôi là làm thế nào để chọn phương pháp trích xuất chính xác cho từng tệp?
Để ý:Tôi đoán, một cách là trích xuất chuỗi cuối cùng (có thể xz
hoặc bz2
hoặc gz
), sau đó sử dụng điều kiện if
So sánh và chọn phương pháp trích xuất phù hợp nhất với chuỗi khớp. Điều này có đúng hay có cách nào dễ dàng hơn để đạt được điều này?
Bạn có thể sử dụng tập lệnh này:
trong khi đọc -rf;
quên "$f" -O "${f##*/}"
xong <>
Tôi là một lập trình viên xuất sắc, rất giỏi!