Bagaimana saya bisa membuat folder di folder di terminal

12

Saya memiliki folder bernama di musicmana di dalamnya ada semua folder artis. Apakah ada cara untuk membuat folder ini: 1. Albums, 2. EP, 3. Singles, 4. Livedi semua folder artis dengan perintah?

wjandrea
sumber

Jawaban:

12

Tentu, jalankan ini di folder musik di mana folder artis berada:

for artist in */; do
   for folder in "1. Albums" "2. EP" "3. Singles" "4. Live"; do
      mkdir "$artist/$folder"
   done
done

Anda bisa menjalankan ini di CLI Anda, atau Anda bisa menjadikannya skrip shell dengan menambahkan #!/bin/shsebagai baris pertama dan menyimpannya dalam file. Jangan lupa untuk membuat file tersebut dapat dieksekusi.

Adapun apa yang dilakukannya: iterates atas semua direktori ( */) dalam direktori saat ini, kemudian untuk masing-masing direktori ini, beralih ke subfolder yang diinginkan (yang kedua for), dan kemudian membuat subfolder (relatif) yang diinginkan.

jawtheshark
sumber
1
Oh itu indah, ini akan dicatat dalam sejarah ;-)
Steve
18

Anda mungkin ingin memakai kawat gigi {curly} Anda untuk yang ini

Demi argumen ini, kita akan berpura-pura. / Musik tidak ada

Dalam direktori dasar Anda untuk ./music kita akan menggunakan perintah -p untuk membuat sub-direktori di mana diperlukan dan kurung kurawal akan digunakan untuk membuat array kecil

Perintah -padalah singkatan orangtua, jika itu lebih mudah diingat Anda dapat menggunakan --parentsebagai gantinya

mkdir -p ./music/{"1. Albums","2. EP","3. Singles","4. Live"}

Jika Anda ingin bermain-main dengan ini, Anda dapat, misalnya

mkdir -p ./folder/prefix{a{1/only,2,3},b,c}suffix/more{z,y,x}

Anda memiliki ekspresi bersarang, Anda dapat memasukkan kurung ke tengah string dan Anda juga dapat mengizinkan subdirektori untuk mengikutinya, dan Anda dapat secara spesifik dengan sub direktori Anda untuk array tertentu

Saya sarankan Anda membuat file di suatu tempat di mana Anda dapat membuat template sendiri dengan perintah tersebut dan memberi mereka deskripsi

Kunjungi halaman ini untuk informasi lebih lanjut https://www.linuxjournal.com/content/bash-brace-expansion dan https://www.linux.com/tutorials/all-about-curly-braces-bash/

Steve
sumber
5
Secara pribadi saya lebih suka jawaban ini, karena tidak perlu Anda berpikir sebagai seorang programmer. Saya jarang menggunakan metode kurung kurawal, tetapi jauh lebih elegan.
jawtheshark
6
OP menginginkan 4 subdir yang ditempatkan di dalam masing-masing subdir itu sendiri music, sehingga arg yang benar mkdiradalah./music/*/{"1. Albums","2. EP","3. Singles","4. Live"}
joH1
1
FYI, -padalah bentuk singkat dari --parent.
Amedee Van Gasse