Tôi có một thư mục chứa nhiều .txt.gz
tệp (trong đó các tên không theo một mẫu cụ thể.)
Cách đơn giản nhất đối với gunzip
họ là gì? Tôi muốn giữ nguyên tên gốc của họ, để họ đi từ whatevz.txt.gz
đếnwhatevz.txt
Tôi có một thư mục chứa nhiều .txt.gz
tệp (trong đó các tên không theo một mẫu cụ thể.)
Cách đơn giản nhất đối với gunzip
họ là gì? Tôi muốn giữ nguyên tên gốc của họ, để họ đi từ whatevz.txt.gz
đếnwhatevz.txt
Câu trả lời:
Làm thế nào về điều này?
$ gunzip *.txt.gz
gunzip
sẽ tạo một tệp gunzipped mà không có .gz
hậu tố và loại bỏ tệp gốc theo mặc định (xem bên dưới để biết chi tiết). *.txt.gz
sẽ được mở rộng bởi shell của bạn cho tất cả các tệp phù hợp.
Bit cuối cùng này có thể khiến bạn gặp rắc rối nếu nó mở rộng ra một danh sách rất dài các tệp. Trong trường hợp đó, hãy thử sử dụng find
và -exec
thực hiện công việc cho bạn.
Từ trang người đàn ông gzip(1)
:
gunzip takes a list of files on its command line and replaces each file whose name ends with .gz, -gz, .z, -z, or _z (ignoring case) and which begins with the correct magic number with an uncompressed file without the original extension.
gzip có thể lưu trữ và khôi phục tên tệp được sử dụng tại thời điểm nén. Ngay cả khi bạn đổi tên tệp nén, bạn có thể ngạc nhiên khi phát hiện ra nó khôi phục lại tên gốc.
Từ trang web gzip:
Theo mặc định, gzip giữ tên tệp gốc và dấu thời gian trong tệp nén. Chúng được sử dụng khi giải nén tập tin với
-N
tùy chọn. Điều này hữu ích khi tên tệp nén bị cắt bớt hoặc khi dấu thời gian không được giữ nguyên sau khi truyền tệp.
Và những tên tệp được lưu trữ trong siêu dữ liệu cũng có thể được xem với file
:
$ echo "foo" > myfile_orig
$ gzip myfile_orig
$ mv myfile_orig.gz myfile_new.gz
$ file myfile_new.gz
myfile_new.gz: gzip compressed data, was "myfile_orig", last modified: Mon Aug 5 08:46:39 2019, from Unix
$ gunzip myfile_new.gz # gunzip without -N
$ ls myfile_*
myfile_new
$ rm myfile_*
$ echo "foo" > myfile_orig
$ gzip myfile_orig
$ mv myfile_orig.gz myfile_new.gz
# gunzip with -N
$ gunzip -N myfile_new.gz # gunzip with -N
$ ls myfile_*
myfile_orig