ใส่ไฟล์ tar'd ในไดเรกทอรีย่อย


8

ฉันมีการตั้งค่าไดเรกทอรีดังนี้:

folder_x
file.y
file.z

ฉันต้องการสร้างไฟล์ tar เพื่อที่เมื่อมันถูกแยกโครงสร้างจะมีลักษณะดังนี้:

dir_q/folder_x
dir_q/file.y
dir_q/file.z

ฉันจะทำให้เรื่องนี้ทำงานโดยใช้ได้tarอย่างไร สำหรับการอ้างอิงคำสั่งปัจจุบันที่ฉันใช้คือ:

tar -czf archive.tar.gz file.y file.z folder_x

คำตอบ:


9

ฉันไม่เคยใช้ตัวเลือก --transform แต่ฉันรวบรวมมันจะทำสิ่งที่คุณต้องการ:

tar -czf archive.tar.gz --transform 's,^,dir_q/,' file.y file.z folder_x

ตระหนักถึงการใช้,แทนที่จะ/เป็นตัวคั่นดังนั้นเราจึงสามารถเพิ่มเครื่องหมายสแลช


อืมก็ไม่ได้ดูเหมือนจะทำมันอย่างถูกต้อง: file.z-> และdirfile.z dirfolder_xฉันจะเล่นกับ regex ด้วยดูว่าฉันจะได้รับในแบบที่ฉันต้องการ

1
นี่เป็นวิธีที่ฉันทำได้: tar -czf archive.tar.gz - การเปลี่ยนแปลงของ ^, dir_q /, 'file.y file.z file_z folder_x Sed ช่วยให้แทนที่จะเป็น / หลีกเลี่ยงความคลุมเครือเมื่อมีเครื่องหมายสแลชในการแสดงออกของคุณ . โดยปกติแล้วฉันจะบอกว่าคุณสามารถหลบหลีกเครื่องหมายทับด้วยแบ็กสแลชได้ แต่อย่างน้อย (อย่างน้อย gnu sed) จะตีความไม่ถูกต้อง
jdb

tar --transform ดูเหมือนจะไม่ทำงานบน MacOS
Alexander Mills

ใน MacOS คุณสามารถติดตั้ง macports และ gnutar เพื่อรับตัวเลือก --transform หรือดาวน์โหลดและรวบรวม gnutar ด้วยตัวคุณเอง
Marnix A. van Ammers

1

หากคุณไม่สนใจที่จะสร้างไดเรกทอรีใหม่ ...

mkdir dir_q; tar -C $ _ -xzvf archive.tar.gz

หรือสร้างไดเรกทอรีใหม่แยกไฟล์ไปยังไดเรกทอรีนั้นจากนั้นเปลี่ยนไดเรกทอรีใหม่จากไดเรกทอรีหลักเพื่อรวมชื่อในรุ่นที่แยกออกมา ด้วยวิธีนี้คุณไม่ต้องจำการเรียกร้องที่ยาวมาก

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