วิธียกเลิกการจัดเก็บลงสื่อถาวรโดยไม่มีโฟลเดอร์รูท แต่รักษาลำดับชั้นแบบเต็มไว้ข้างในได้อย่างไร


25

ถ้าฉันมี.tarไฟล์เก็บถาวรและเมื่อฉันแยกมันจะทำให้ฉันมีโฟลเดอร์เดียวfooที่มีเนื้อหามากกว่านี้เช่นนี้

foo/
  something.txt
  another.txt
  bar/
    something-else.txt

มีวิธีที่ฉันสามารถแก้ไข.tarคำสั่งเพื่อ "ข้าม" โฟลเดอร์ราก ( fooในกรณีนี้) และเพียงดึงเนื้อหาทั้งหมดของโฟลเดอร์นั้นลงใน cwd ของฉันโดยตรงเช่นนี้:

something.txt
another.txt
bar/
  something-else.txt

คำตอบ:


29

ง่าย. เพียงใช้--strip-components=1ในที่เก็บถาวรเช่นนี้:

tar -xf archive.tar --strip-components=1

และดังที่อธิบายไว้ในtarหน้าคนเป็นทางการ:

--strip ส่วนประกอบ = จำนวน

ดึงส่วนประกอบชั้นนำ NUMBER จากชื่อไฟล์ในการแยก

ด้วยเหตุผลที่ว่าถ้าเส้นทางประกอบด้วยfoo/something.txtแล้วครั้งแรกที่“องค์ประกอบ” ของเส้นทางที่จะเป็นfoo/เช่นนั้น--strip-components=1ได้อย่างมีประสิทธิภาพจะลดลงจากเส้นทางfoo/foo/something.txt

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