Làm cách nào để gunzip tất cả các tệp đệ quy trong một thư mục đích?


Câu trả lời:


15

Sử dụng các lệnh dưới đây. Thay thế <path_of_your_zips>bằng đường dẫn đến tệp ZIP của bạn và <out>với thư mục đích của bạn:

  • Đối với tệp GZ

    find <path_of_your_zips> -type f -name "*.gz" -exec tar xf {} -C <out> \;
    

    hoặc là

    find <path_of_your_zips> -type f -name "*.gz" -print0 | xargs -0 -I{} tar xf {} -C <out>
    
  • Đối với tệp ZIP

    find <path_of_your_zips> -type f -name "*.zip" -exec unzip {} -d <out> \;
    

    hoặc là

    find <path_of_your_zips> -type f -name "*.zip" -print0 | xargs -0 -I{} unzip {} -d <out>
    

Điều này có làm việc với các tập tin .gz?
dùng2028856

1
được cải thiện, bây giờ có :)
AB

2
Tại sao không -execthích find . -type f -name "*.gz" -exec tar xzf {} -C <out> \;?
Elliott Frisch

1
chỉ hoạt động cho các tệp tarball, không chỉ cho các tệp g-zip
Covich

1
các tệp được nén bằng các tệp không phải là tệp tar sẽ báo lỗi này:tar: This does not look like a tar archive
Tạm dừng cho đến khi có thông báo mới.

64

gunzip-rtùy chọn. Từ man gunzip:

   -r --recursive
          Travel  the directory structure recursively. If any of the 
file names specified on the command line are directories, gzip 
will descend into the directory and compress all the files it finds
there (or decompress them in  the  case  of gunzip ).

Vì vậy, nếu bạn muốn gunziptất cả các tệp nén ( gunziphiện có thể giải nén các tệp được tạo bởi gzip, zip, nén, nén -H hoặc gói) trong thư mục /foo/barvà tất cả các thư mục con của nó:

gunzip -r /foo/bar

Điều này sẽ xử lý tên tập tin với không gian quá.

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.