Yani dizinde virgülle ayrılmış dizin isimleri listesi istiyorsunuz Bu yapılabilir.
Shell + coreutils
Herkes oneliner yayınladığı için, işte benimki de (mkdir + parametre değiştirme artı + kabuk yönlendirme).
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 bir metin işleme dilidir, ancak system()
varsayılan kabuğu çağıracak ve parantez içine alınmış [s] komutunu çalıştıracak çok güzel bir işlevi vardır (bir dize olmalıdır).
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
Ya ,
da gsub()
işlevini kaldırabilir ve çağırabilir system("mkdir "$0)
ancak adlarında boşluk içeren dizinler oluşturmak istiyorsanız sorun olabilir.
piton
Aynı şeyi yapmanın Pythonic yolu, her satırı okumak \n
, izlemekten kurtulmak, her şeyi tek bir listeye sürmek ve liste öğeleri üzerinde yineleme yapmak ve liste öğesi başına dizin oluşturmak olacaktır. Aşağıdaki örnekte, dosyama /home/xieerqi/dirList.txt
verilen tam yol olduğunu ve her yeni dizinin tam yolunu dizeye /home/username/
ve listeden okunan dir adı birleştirerek oluşturduğumuza dikkat edin. Gerektiği gibi kendi değerlerinizi değiştirin
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
....