ใช้เครื่องหมายปีกกา (เครื่องหมายปีกกา) เพื่อสร้างโครงสร้างโฟลเดอร์ด้วย `mkdir -p`


16

ในฐานะman mkdirรัฐ

   -p, --parents
          no error if existing, make parent directories as needed

เมื่อฉันรันคำสั่งนี้

mkdir -p work/{F1,F2,F3}/{temp1,temp2}

มันจะสร้างโครงสร้างของโฟลเดอร์เช่นนี้workโฟลเดอร์หลักแล้วF1, F2, F3โฟลเดอร์และเด็กtemp1และtemp2โฟลเดอร์เด็กอายุต่ำกว่าสามโฟลเดอร์หลักF1, ,F2F3

   work
     -F1
       -temp1
       -temp2
     -F2
       -temp1
       -temp2
     -F3
       -temp1
       -temp2

ตอนนี้ปัญหาคือว่าผมต้องการที่จะสร้างtemp1, temp2โฟลเดอร์เฉพาะภายใต้F1ไม่อยู่ภายใต้F2และF3แต่ฉันสับสนเกี่ยวกับวิธีการที่ฉันสามารถเขียนคำสั่งที่จะทำสิ่งที่ฉันต้องการ


@Caleb: ขออภัยฉันไม่ทราบว่าเราทั้งคู่กำลังแก้ไขในเวลาเดียวกันดูเหมือนว่าการผสานการแก้ไขไม่ได้ดำเนินการโดย SE: - /
Stéphane Gimenez

@ สตีเฟ่น: ไม่ต้องกังวล ฉันได้ทำการแก้ไขมากมายและมันค่อนข้างยากที่การแก้ไขสำคัญสองอย่างจะถูกบดบังเช่นนั้น ขอบคุณสำหรับการมีส่วนร่วม!
Caleb

คำตอบ:


25

บางทีนี่คือสิ่งที่คุณกำลังมองหา?

 mkdir -p work/{F1/{temp1,temp2},F2,F3}

เฮ้ฉันสงสัยเมื่อเร็ว ๆ นี้ว่าสิ่งต่าง ๆ สามารถทำได้ง่ายอย่างนั้น ขอบคุณ!
rozcietrzewiacz

2

คำอธิบายที่ดีมากของการขยายรั้ง (พร้อมตัวอย่าง) สามารถดูได้ที่ส่วนย่อยBrace Expansionของคู่มือทุบตี ( man bashกด/เพื่อเริ่มการค้นหาและค้นหาBrace Expansion)


ขอบคุณคำตอบของคุณทำให้ฉันได้รับคำแนะนำที่ยอดเยี่ยมนี้! เพิ่งรู้ว่ามันเรียกว่า "Brace Expansion" ดังนั้นฉันรู้ว่าต้องทำอะไรกับ google linuxcommand.org/lc3_lts0080.phpข้อความที่ตัดตอนมา: "บางทีการขยายตัวที่แปลกประหลาดที่สุดนั้นเรียกว่าการขยายรั้งด้วยด้วยคุณสามารถสร้างสตริงข้อความจำนวนมากจากรูปแบบที่มีวงเล็บปีกกานี่เป็นตัวอย่าง: [me@linuxbox me]$ echo Front-{A,B,C}-Back Front-A-Back Front-B-Back Front-C-Back"
Rock Lee

0
mkdir -p work/F{1..3} work/F1/temp{1,2}

นี่เป็นครั้งแรกสร้างและสามไดเรกทอรีย่อยก่อนที่จะสร้างไดเรกทอรีระดับที่ต่ำกว่าwork work/F1ง่ายต่อการอ่านและเข้าใจ

หรือถ้าคุณต้องการรวมทุกอย่างไว้ในนิพจน์มอนสเตอร์เดียว (ไม่จำเป็นต้องทำเช่นนั้นเพราะยากต่อการอ่านและบำรุงรักษา):

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