ดังนั้นคุณต้องการคั่นรายการชื่อไดเรกทอรีด้วยเครื่องหมายจุลภาคหรือไม่ ที่สามารถทำได้
Shell + coreutils
เนื่องจากทุกคนโพสต์ oneliners นี่เป็นของฉันเช่นกัน (การทดแทนพารามิเตอร์ mkdir + บวกการเปลี่ยนเส้นทางเชลล์ +)
DIR:/testdir
skolodya@ubuntu:$ ls
DIR:/testdir
skolodya@ubuntu:$ mkdir $( tr '[,\n]' ' ' < /home/xieerqi/dirList.txt )
DIR:/testdir
skolodya@ubuntu:$ ls
dirFive/ dirfour/ dirone/ dirthree/ dirtwo/
AWK
AWK เป็นภาษาการประมวลผลข้อความ แต่มีsystem()
ฟังก์ชั่นที่ดีมากซึ่งจะเรียกเชลล์เริ่มต้นและเรียกใช้คำสั่ง [s] ที่อยู่ในวงเล็บ (ซึ่งต้องเป็นสตริง)
DIR:/xieerqi
skolodya@ubuntu:$ awk -F ',' '{for(i=1;i<=NF;i++) system("mkdir "$i)}' dirList.txt
DIR:/xieerqi
skolodya@ubuntu:$ ls -ld dir*
-rw-rw-r-- 1 xieerqi xieerqi 23 Feb 9 11:41 dirList.txt
drwxrwxr-x 2 xieerqi xieerqi 4096 Feb 9 11:42 dirone/
drwxrwxr-x 2 xieerqi xieerqi 4096 Feb 9 11:42 dirthree/
drwxrwxr-x 2 xieerqi xieerqi 4096 Feb 9 11:42 dirtwo/
DIR:/xieerqi
skolodya@ubuntu:$ cat dirList.txt
dirone,dirtwo,dirthree
หรือคุณอาจลบ,
ด้วยgsub()
ฟังก์ชั่นและการโทรsystem("mkdir "$0)
แต่นั่นอาจเป็นปัญหาหากคุณต้องการสร้างไดเรกทอรีที่มีช่องว่างในชื่อ
หลาม
วิธี Pythonic ของการทำเช่นเดียวกันคือการอ่านแต่ละบรรทัดกำจัดการลาก\n
ดันทุกอย่างในรายการเดียวและวนซ้ำไอเท็มรายการและสร้าง dirs ต่อรายการ โปรดทราบว่าในตัวอย่างร้อง/home/xieerqi/dirList.txt
เป็นเส้นทางแบบเต็มให้กับไฟล์ของฉันและเราทำขึ้นเส้นทางเต็มของแต่ละไดเรกทอรีใหม่โดยการเข้าร่วมสตริง/home/username/
และชื่อ dir อ่านจากรายการ ทดแทนค่าของคุณเองตามความจำเป็น
DIR:/testdir
skolodya@ubuntu:$ ls
DIR:/testdir
skolodya@ubuntu:$ /home/xieerqi/makeDirs.py
DIR:/testdir
skolodya@ubuntu:$ ls
dirFive/ dirfour/ dirone/ dirthree/ dirtwo/
DIR:/testdir
skolodya@ubuntu:$ cat /home/xieerqi/makeDirs.py
#!/usr/bin/env python
import os
with open("/home/xieerqi/dirList.txt") as file:
for line in file:
for directory in line.strip().rsplit(','):
path = '/home/xieerqi/testdir/' + directory
os.makedirs(path)
man mkdir
....