ฉันจะแยกไฟล์ gzip หลายไฟล์ในไดเรกทอรีและไดเรกทอรีย่อยได้อย่างไร


11

ฉันได้ลองทั้งสองgzipและgunzipคำสั่ง แต่ฉันได้ทั้ง

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

ถ้าฉันลอง-fตัวเลือกมันใช้เวลานานมากในการทำงานกับไฟล์เดียวและคำสั่งนั้นไม่ได้ดำเนินการเสร็จสมบูรณ์ ฉันพลาดอะไรไปรึเปล่า?


2
ไดเรกทอรีมีไฟล์. gz ซึ่งชื่อขึ้นต้นด้วยเครื่องหมายขีดคั่น-Y.something.gzหรือไม่เช่น? ถ้าเป็นเช่นนั้นคุณอาจจำเป็นต้องใช้--ธงGnu เพื่อให้แน่ใจว่าพวกเขาได้รับการปฏิบัติเหมือนเป็นชื่อไฟล์แทนที่จะเป็นตัวเลือกเช่นgunzip -- *.gz
steeldriver

@steeldriver ใช่ฉันมีไฟล์ไม่กี่ไฟล์ที่ขึ้นต้นด้วย -
Herman Toothrot

ที่ทำให้เกิดปัญหาอย่างน้อยหนึ่งในสองปัญหา
Herman Toothrot

คำตอบ:


16

คุณสามารถใช้คำสั่งด้านล่าง

ไปที่ไดเรกทอรีที่.gzไฟล์ของคุณและเรียกใช้คำสั่ง:

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

มันจะแยกไฟล์ทั้งหมดที่มีชื่อเดิมและเก็บไว้ในไดเรกทอรีบ้านของผู้ใช้ปัจจุบัน ( /home/username) คุณสามารถเปลี่ยนเป็นที่อื่นได้

แก้ไข:

gunzip *.gz

คำสั่งนี้ยังใช้งานได้ แต่โดยค่าเริ่มต้นจะแทนที่ไฟล์ต้นฉบับ


คุณอ่านสิ่งที่ฉันเขียนไว้ในคำถามของฉัน? gunzip * .gz ไม่ทำงานสำหรับฉัน แต่สำหรับการวนซ้ำฉันก็งง
Herman Toothrot

แต่มันใช้งานได้สำหรับฉันและคนอื่น ๆ ทำไมถึงแสดงตัวเลือกที่ไม่ถูกต้อง - 'Y' ' ฉันคิดว่ารูปแบบไฟล์ของคุณไม่เป็นไรหรือขาดอะไรบางอย่างในคำสั่ง
pl_rock


4

ตัวเลือก # 1 : unzip หลายไฟล์โดยใช้เครื่องหมายคำพูดเดี่ยว (ฉบับย่อ)

gunzip '*.gz'

โปรดทราบว่า*.gzคำนั้นอยู่ระหว่างเครื่องหมายคำพูดเดี่ยวสองคำดังนั้นเชลล์จะไม่รับรู้ว่ามันเป็นอักขระไวด์การ์ด

ตัวเลือก # 2 : คลายซิปหลายไฟล์โดยใช้ shell for loop (รุ่นยาว)

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

ที่มา

แก้ไข:

ฉันเพิ่งลอง:

gunzip -dk *.gz

และมันก็ใช้งานได้

-dเพื่อขยายและkเก็บไฟล์ต้นฉบับ


คุณได้ตรวจสอบgunzip ‘*.gz’ คำสั่งนี้ ฉันไม่สามารถรันคำสั่งนี้ได้ มันให้ข้อผิดพลาด
pl_rock

ใช้gunzip '*.gz'ไม่ได้gunzip ‘*.gz’ ( ' 'ไม่ใช่ `'` `)
Bilal

ฉันแค่คัดลอกวางคำสั่งของคุณและให้gzip: *.gz: No such file or directoryใหม่ยังไม่ทำงาน คุณลองแล้วหรือยัง
pl_rock

มันไม่ทำงาน gunzip '* .gz' gzip: * .gz: ไม่มีไฟล์หรือไดเรกทอรี
Herman Toothrot

ขออภัยฉันไม่ลองมัน! ฉันกำลังอยู่ใน WIndows ตอนนี้: (
Bilal

0

ผู้ใช้ Linux:

ใช้คำสั่งต่อไปนี้สำหรับการแยกจำนวนไฟล์. gz ขั้นต่ำในไดเรกทอรีปัจจุบันและไดเรกทอรีย่อย

gunzip *.gz

ใช้คำสั่งต่อไปนี้เพื่อแยกไฟล์. gz จำนวนเท่าใดก็ได้ในไดเรกทอรีปัจจุบันและไดเรกทอรีย่อย

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