Bagaimana cara mem-gunzip semua file secara rekursif di direktori target?


Jawaban:


15

Menggunakan perintah di bawah ini. Ganti <path_of_your_zips>dengan jalur ke file ZIP Anda dan <out>dengan folder tujuan Anda:

  • Untuk file GZ

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

    atau

    find <path_of_your_zips> -type f -name "*.gz" -print0 | xargs -0 -I{} tar xf {} -C <out>
    
  • Untuk file ZIP

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

    atau

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

Apakah ini berfungsi dengan file .gz?
user2028856

1
ditingkatkan, Sekarang ya :)
AB

2
Kenapa tidak -execsuka find . -type f -name "*.gz" -exec tar xzf {} -C <out> \;?
Elliott Frisch

1
hanya berfungsi untuk file tarball, tidak hanya untuk file yang di-zip
Covich

1
file gzipped yang bukan file tar memberikan kesalahan ini:tar: This does not look like a tar archive
Dijeda hingga pemberitahuan lebih lanjut.

64

gunzipmemiliki -ropsi. Dari 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 ).

Jadi, jika Anda ingin gunzipsemua file terkompresi ( gunzipsaat ini dapat mendekompres file yang dibuat oleh gzip, zip, kompres, kompres -H atau paket) di dalam direktori /foo/bardan semua subdirektori:

gunzip -r /foo/bar

Ini akan menangani nama file dengan spasi juga.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.