tar -tf filename.tar
folder1/file
folder1/name
[...]
ฉันต้องการแยกไฟล์และชื่อไปที่, โฟลเดอร์ 2 สิ่งนี้สามารถทำได้ในฐานะหนึ่งซับ?
tar -tf filename.tar
folder1/file
folder1/name
[...]
ฉันต้องการแยกไฟล์และชื่อไปที่, โฟลเดอร์ 2 สิ่งนี้สามารถทำได้ในฐานะหนึ่งซับ?
คำตอบ:
ใช้-C
และ--strip-components
(ดูman tar
)
mkdir FOLDER
# for remote tar file
curl -L ’remote_tar_file' | tar -xz - -C FOLDER --strip-components=1
# for local tar file
tar -xzf FILENAME -C FOLDER --strip-components=1
การ-C
ตั้งค่าสถานะสมมติว่ามีไดเรกทอรีอยู่แล้วดังนั้นเนื้อหาของไฟล์ tar สามารถขยายเข้าไปได้ mkdir FOLDER
ด้วยเหตุนี้
การ--strip-components
ตั้งค่าสถานะจะใช้เมื่อไฟล์ tar จะขยายตัวเองลงในโฟลเดอร์ตามธรรมชาติเช่น github ซึ่งเป็นตัวอย่างที่repo-name-master
โฟลเดอร์ แน่นอนว่าคุณไม่จำเป็นต้องสร้างโฟลเดอร์ระดับแรกที่นี่ดังนั้นให้--strip-components
ตั้งค่าให้1
ลบโฟลเดอร์แรกโดยอัตโนมัติ ยิ่งตั้งค่าจำนวนมากเท่าใดโฟลเดอร์ที่ซ้อนกันจะถูกลบออก
คุณยังสามารถใช้--transform
ตัวเลือกเพื่อความยืดหยุ่นอีกเล็กน้อย ยอมรับการดำเนินการเปลี่ยน sed ใด ๆ
ตัวอย่างเช่นนี่คือวิธีที่ฉันแยก Linux tarball ไปยังไดเรกทอรีใหม่เพื่อให้ฉันสามารถใช้โปรแกรมแก้ไข:
tar -xjf linux-2.6.38.tar.bz2 --transform 's/linux-2.6.38/linux-2.6.38.1/'
man tar
ผมอ่าน--strip-components
ไม่ได้จุด เป็นคนดี