Làm cách nào tôi có thể trích xuất nhiều tệp gzip trong thư mục và thư mục con?


10

Tôi đã thử cả hai gzipgunziplệnh nhưng tôi nhận được

gunzip *.gz 
gzip: invalid option -- 'Y' 

gunzip -S-1800-01-01-000000-g01.h5.gz  
gzip: compressed data not read
 from a terminal. Use -f to force decompression. For help, type: gzip -h

Nếu tôi thử -ftùy chọn, sẽ mất một thời gian rất lâu để làm việc trên một tệp duy nhất và lệnh không được thực thi thành công. Tui bỏ lỡ điều gì vậy?


1
Thư mục có chứa các tệp .gz có tên bắt đầu bằng dấu gạch nối không, chẳng hạn như -Y.something.gz? Nếu vậy, bạn có thể cần phải sử dụng --cờ Gnu để đảm bảo rằng chúng được coi là tên tệp chứ không phải là tùy chọn, ví dụgunzip -- *.gz
Steeldo

@steel ấn vâng tôi có một vài tập tin bắt đầu bằng -
Herman Toothrot

Điều đó gây ra ít nhất một trong hai vấn đề.
Herman Toothrot

Câu trả lời:


16

Bạn có thể sử dụng lệnh dưới đây.

Chuyển đến thư .gzmục chứa tệp của bạn và chạy lệnh:

for f in *.gz ; do gunzip -c "$f" > /home/$USER/"${f%.*}" ; done

Nó sẽ trích xuất tất cả các tập tin với tên gốc và lưu trữ nó vào thư mục nhà người dùng hiện tại ( /home/username). Bạn có thể thay đổi nó ở một nơi khác.

BIÊN TẬP :

gunzip *.gz

Lệnh này cũng sẽ hoạt động. Nhưng theo mặc định, nó thay thế tệp gốc.


Bạn đã đọc những gì tôi viết trong câu hỏi của tôi? gunzip * .gz không hoạt động với tôi. Nhưng vòng lặp for hoạt động, tôi bối rối.
Herman Toothrot

nhưng nó cũng hoạt động với tôi và những người khác tại sao lại hiển thị 'tùy chọn không hợp lệ -' Y '`. Tôi nghĩ rằng định dạng tập tin của bạn không ổn hoặc bạn thiếu một số điều trong lệnh.
pl_rock


4

Tùy chọn # 1 : giải nén nhiều tệp bằng trích dẫn đơn (phiên bản ngắn)

gunzip '*.gz'

Lưu ý rằng *.gztừ được đặt ở giữa hai trích dẫn, do đó shell sẽ không nhận ra đó là ký tự đại diện.

Tùy chọn # 2 : giải nén nhiều tệp bằng shell cho vòng lặp (phiên bản dài)

for g in *.gz; do gunzip $g; done

Nguồn

BIÊN TẬP :

Tôi vừa thử:

gunzip -dk *.gz

va no đa hoạt động.

-dđể giải nén và kgiữ các tập tin gốc.


bạn đã kiểm tra gunzip ‘*.gz’ lệnh này tôi không thể chạy lệnh này nó đưa ra lỗi.
pl_rock

sử dụng gunzip '*.gz'không gunzip ‘*.gz’ ( ' 'không `'` `)
Bilal

Tôi chỉ sao chép dán lệnh của bạn và nó gzip: *.gz: No such file or directorycũng không hoạt động. bạn đã thử chưa
pl_rock

Nó không hoạt động gunzip '* .gz' gzip: * .gz: Không có tệp hoặc thư mục như vậy
Herman Toothrot

Xin lỗi, tôi đã không thử nó! Tôi đang ở WUsows Ngay bây giờ :(
Bilal

0

Người dùng Linux:

Sử dụng lệnh sau để trích xuất số lượng tệp .gz tối thiểu trong thư mục hiện tại và thư mục con của nó

gunzip *.gz

Sử dụng lệnh sau để trích xuất bất kỳ số lượng tệp .gz nào trong thư mục hiện tại và thư mục con của nó

sudo find . -name "*.gz" | xargs gunzip
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.