ฉันจะ gunzip ไปยังไดเรกทอรีปลายทางอื่นได้อย่างไร


80

ฉันจะ gunzip ไปยังไดเรกทอรีปลายทางที่ไม่ใช่ไดเรกทอรีปัจจุบันได้อย่างไร

สิ่งนี้ไม่ทำงาน:

gunzip *.gz /putthemhere/

คำตอบ:


104

ขอgunzipให้ส่งออกไปยังเอาต์พุตมาตรฐานและเปลี่ยนเส้นทางไปยังไฟล์ในไดเรกทอรีนั้น:

gunzip -c file.gz > /THERE/file

zcatgunzip -cเป็นทางลัดสำหรับ

หากคุณต้องการ gunzip หลายไฟล์วนซ้ำทุกไฟล์:

for f in *.gz; do
  STEM=$(basename "${f}" .gz)
  gunzip -c "${f}" > /THERE/"${STEM}"
done

(ที่นี่basenameใช้เพื่อรับส่วนของชื่อไฟล์โดยไม่มีนามสกุล)


3
สร้างไฟล์ แต่ไม่รักษาความเป็นเจ้าของไฟล์สิทธิ์ ฯลฯ ที่อาจดีหรือไม่ดีขึ้นอยู่กับสถานการณ์ที่แน่นอนของคุณ
Chris Johnson

2

หากคุณต้องการแยกไฟล์เดียวและเขียนลงในไดเรกทอรีที่เป็นเจ้าของรูทให้ใช้sudo dd:

zcat filename.conf.gz | sudo tee /etc/filename.conf >/dev/null

หากไฟล์นั้นมาจากแหล่งข้อมูลระยะไกล (เช่น ssh, curl https เป็นต้น) คุณสามารถทำได้ดังนี้:

ssh remoteserver cat filename.conf.gz | zcat | sudo tee /etc/filename.conf >/dev/null

(โปรดทราบว่าตัวอย่างเหล่านี้ใช้ได้กับไฟล์เดียวเท่านั้นซึ่งแตกต่างจากตัวอย่าง * .gz ซึ่งเป็นไฟล์ gzipped ทั้งหมดในไดเรกทอรี)


สำหรับการเขียนที่มีสิทธิ์รากเป็นเพียงเล็กน้อยมากขึ้นกว่าการใช้สำนวนsudo tee $filename >/dev/null dd
dcoles

1

คุณสามารถลองด้วย> เพื่อเปลี่ยนเส้นทางผลลัพธ์ไปยังสถานที่ที่คุณต้องการ

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