Saya mencoba membuat pohon direktori dari A ke Z di mana direktori berikutnya berada di dalam direktori saat ini.
Sebagai contoh: B berada di dalam A dan C berada di dalam B dan seterusnya ..
-A
--B
---C
----...Z
Adakah petunjuk tentang cara menyelesaikannya dengan cara otomatis?
command-line
directory
Nish
sumber
sumber
mkdir -p
".)Jawaban:
Dengan
mkdir
,printf
dan ekspansi brace bash:{A..Z}
memperluas keA B ... Z
,printf "%s/"
mencetak argumen dengan/
setelahnya, jadi saya mengertiA/B/...Z/
mkdir -p
membuatA/B/.../Z
direktori dengan direktori induk apa pun yang perlu dibuat.sumber
-p
dalammkdir
perintah.Pada tingkat yang sangat sederhana, Anda dapat menggunakan
{A..Z}
ekspansi untuk menghasilkan semua huruf, lalu secara iteratif membuat dan memasukkan masing-masing:Seperti yang Anda lihat di output prompt saya, sekarang Anda memiliki direktori yang benar-benar dirantai.
Namun, jika nama direktori aktual berbeda dari sekadar alfabet, Anda harus entah bagaimana memberikan daftar nama direktori, mungkin melalui file, yang Anda gunakan untuk mengulang dan melakukan proses yang sama lagi. Pada dasarnya ini
sumber
for d in {A..Z}; do mkdir "$d"; cd "$d"; for i in {1..100}; do mkdir "${d}${i}" ;done ; done
for d in {A..Z}; do mkdir "$d"; cd "$d"; mkdir "$d"{1..100}; done
tree
, saya tidak yakin bagaimana cara memperbaikinya, tapi saya pikir ini bahkan mungkin bukantree
masalah, melainkan urutan penyortiran shell. Saya sarankan mengajukan pertanyaan aktual tentang hal itu di sini atau lebih baik lagi di unix.stackexchange.comMeskipun cara muru
printf
tidak bisa dikalahkan, saya pribadi sukajot
untuk hal semacam ini.jot
tidak diinstal secara default di Ubuntu. Theathena-jot
menyediakan paket. Salah satu dari perintah ini berfungsi:Benar-benar setiap perintah yang menghasilkan urutan huruf dan bergabung dengan garis miring akan memfasilitasi ini, karena hasilnya kemudian dapat diteruskan ke
mkdir -p
salah satu melalui substitusi perintah (seperti dalam jawaban muru ) atau menggunakanxargs
. Berikut adalah beberapa contoh menggunakan beberapa alat danxargs
yang tidak mengharuskan Anda menginstal perangkat lunak, kecuali mungkin pada sistem yang sangat minim atau Ubuntu Core:Rilis tua Ubuntu datang dengan Python 2 bukannya Python 3. Untuk itu, hanya mengubah
python3
untukpython
membuat pekerjaan perintah terakhir, jika Anda benar-benar ingin melakukan ini dengan Python.Demikian pula, cara pendek dan sederhana muru dapat ditulis sebagai alternatif:
Trailing
/
, di jalur direktorimkdir -p
diminta untuk dibuat, tidak ada masalah dan bisa dibilang lebih disukai gaya. Tapi tidak masalah untuk menghilangkannya, seperti contoh-contoh lain dalam jawaban ini.sumber