Buat perintah ls urut berdasarkan tipe file (mis. Direktori dan ekstensi file)

15

Bagaimana cara saya membuat lsurutkan berdasarkan jenis file (mis. Direktori terlebih dahulu dan kemudian oleh ekstensi file)? Jawaban yang disarankan dalam (Pengguna Super) Buatlah urutkan berdasarkan jenis file menghasilkan kesalahan opsi yang tidak diketahui ls.

Kit
sumber
2
Koreksi kecil mengenai judul Anda: ls bukan perintah bash; ini adalah executable mandiri yang terletak di /bin/ls.
pada

Jawaban:

21

Seperti yang sudah Anda ketahui, perintah versi Darwin lstidak mendukung -X | --sort=extensionopsi. Opsi ini unik untuk versi GNU ls.

Anda dapat memperoleh versi GNU lsuntuk sistem Anda. Cara termudah untuk melakukan ini adalah melalui manajer paket Homebrew dan sistem porting. Dengan Homebrew terinstal, lakukan:

brew install coreutils

untuk menambahkan paket Utilitas Inti GNU ke sistem Anda. Semua utilitas akan diawali dengan gsehingga tidak bertabrakan dengan utilitas Darwin default yang disertakan dengan OS X.

Dengan GNU Core Utilites terinstal sekarang Anda dapat melakukannya:

gls -X

Dan Anda akan melihat output diurutkan sesuai keinginan.

Jika Anda ingin menggunakan GNU Core Utils alih-alih utilitas yang menyertai OS X Anda dapat meletakkan baris berikut di ~/.bashrcfile Anda :

source /usr/local/Cellar/coreutils/8.14/aliases

Dan Anda tidak perlu menggunakan gawalan pada perintah lagi. Saya akan mengatakan ini bukan hal yang sepenuhnya aman untuk dilakukan karena beberapa utilitas GNU berbeda dari bash built-in dan alat Darwin dalam cara mereka berperilaku, cukup sehingga mereka dapat mengacaukan hal-hal lain dalam sesi shell Anda. Jadi lakukan ini dengan hati-hati.

Ian C.
sumber
1

Berdasarkan jawaban di artikel Pengguna Super yang ditautkan :

ls -l |sort -d -k 1.1,1.1r -k 9 | cut -c 50-

Jika Anda ingin melihat seluruh hasil ls -l, tinggalkan cutbagian tersebut.

nohillside
sumber