Apakah ada cara untuk mendaftar hanya folder dalam direktori menggunakan perintah bash? (sebagai ls
perintah mencantumkan semua file dan folder)
linux
command-line
ls
SpiXel
sumber
sumber
ls -d -- */
danls -d */
?--
secara konvensional digunakan untuk menandai akhir opsi, sehingga jika sebuah file bernama-l
ls tidak akan menafsirkannya sebagai opsi format daftar panjang.Tanggapan Stephen Martin memberi peringatan, dan membuat daftar folder saat ini juga, jadi saya sarankan
(Ini di Linux; Saya tidak dapat menemukan -maxdepth dan -mindepth di halaman manual POSIX untuk menemukan)
sumber
ls -d -- */
pilihannya, karenafind
akan menemukan directorty tersembunyi juga. Yang kadang-kadang bisa bermanfaat, tetapi juga terkadang menyebabkan masalah. Saya harap komentar ini dapat membantu orang lain. +1Akan daftar hanya folder. Dan seperti yang ditunjukkan Teddy, Anda perlu -maxdepth untuk menghentikannya kembali menjadi sub dir
sumber
-maxdepth 1
juga.Jawaban Daniel benar. Berikut adalah beberapa tambahan yang bermanfaat.
Untuk menghindari daftar folder tersembunyi (seperti
.git
), coba ini:Dan untuk mengganti dot slash yang ditakuti di awal
find
output di beberapa lingkungan, gunakan ini:sumber
Anda "tidak seharusnya" mem-parsing output ls, atau begitulah yang dikatakan. Alasan di balik adalah bahwa output dimaksudkan agar dapat dibaca oleh manusia dan yang dapat membuatnya tidak perlu rumit untuk diuraikan, jika saya ingat.
jika Anda tidak ingin ls atau temukan, Anda mungkin ingin mencoba memfilter "*" dengan "[-d]".
Saya melakukan hal itu, untuk beberapa alasan ls dan menemukan tidak berfungsi (file name dengan spasi dan kurung kurasa, atau sesuatu yang saya menghadap), maka saya melakukan sesuatu di sepanjang baris
sumber
Hanya untuk menekankan hal yang membingungkan saya di sini, sehubungan dengan pemilihan pola glob; katakan Anda memiliki ini:
Jadi, katakan di sini Anda hanya ingin memilih
mydir*
direktori. Perhatikan bahwa jika Anda meninggalkan slash penghentian,ls -d
akan mencantumkan file juga:... namun, dengan slash penghentian, maka hanya direktori yang terdaftar:
sumber
printf "%s\n" */
akan mencantumkan semua direktori di $ PWD.echo */
juga akan bekerja, tetapi dalam satu baris panjang, lebih sulit ketika nama memiliki spasi.sumber
Anda juga bisa menggunakan:
Atau:
sumber