ฉันจะ gunzip ไฟล์ทั้งหมดซ้ำในไดเรกทอรีเป้าหมายได้อย่างไร


30

ฉันต้องการที่จะรู้ว่าคำสั่งที่ใช้ในการ gunzip ไฟล์ทั้งหมดในไดเรกทอรีเป้าหมายซ้ำคืออะไร? ฉันพยายามใช้คำสั่ง unzip แต่มันไม่ทำงาน

ฉันลองคำสั่งจากUnzip ไฟล์ zip ทั้งหมดในโฟลเดอร์ปลายทางหรือไม่?

คำตอบ:


15

ใช้คำสั่งด้านล่าง แทนที่<path_of_your_zips>ด้วยพา ธ ไปยังไฟล์ ZIP ของคุณและ<out>ด้วยโฟลเดอร์ปลายทางของคุณ:

  • สำหรับไฟล์ GZ

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

    หรือ

    find <path_of_your_zips> -type f -name "*.gz" -print0 | xargs -0 -I{} tar xf {} -C <out>
    
  • สำหรับไฟล์ ZIP

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

    หรือ

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

สิ่งนี้ใช้ได้กับไฟล์. gz หรือไม่
user2028856

1
ปรับปรุงแล้วใช่แล้ว :)
AB

2
ทำไมไม่-execชอบfind . -type f -name "*.gz" -exec tar xzf {} -C <out> \;?
Elliott Frisch

1
ใช้งานได้เฉพาะไฟล์ tarball ไม่ใช่เฉพาะไฟล์ g-zipped
Covich

1
ไฟล์ gzipped ที่ไม่ใช่ไฟล์ tar มีข้อผิดพลาดนี้:tar: This does not look like a tar archive
หยุดชั่วคราวจนกว่าจะมีประกาศ

64

gunzipมี-rตัวเลือก จาก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 ).

ดังนั้นหากคุณต้องการgunzipไฟล์บีบอัดทั้งหมด ( gunzipปัจจุบันสามารถคลายไฟล์ที่สร้างโดย gzip, zip, compress, compress -H หรือ pack) ภายในไดเรกทอรี/foo/barและไดเรกทอรีย่อยทั้งหมด:

gunzip -r /foo/bar

นี้จะจัดการชื่อไฟล์ด้วยช่องว่างด้วย

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.