Sortuj polecenia ls według typu pliku (np. Katalogów i rozszerzenia pliku)

15

Jak wykonać lssortowanie według typu pliku (np. Najpierw katalogów, a następnie rozszerzenia plików)? Odpowiedzi sugerowane w (Super User) Sortuj ls według typu pliku powodują nieznane błędy opcji ls.

Zestaw
źródło
2
Drobne poprawki dotyczące twojego tytułu: ls nie jest poleceniem bash; jest to samodzielny plik wykonywalny zlokalizowany pod adresem /bin/ls.
bneely

Odpowiedzi:

21

Jak się dowiedziałeś, wersja lspolecenia Darwina nie obsługuje tej -X | --sort=extensionopcji. Ta opcja jest unikalna dla wersji GNU ls.

Możesz uzyskać wersję GNU lsdla swojego systemu. Najłatwiej to zrobić za pomocą menedżera pakietów Homebrew i systemu przenoszenia. Po zainstalowaniu Homebrew:

brew install coreutils

aby dodać pakiet GNU Core Utilities do swojego systemu. Wszystkie narzędzia będą miały prefiks, gaby nie kolidowały z domyślnymi narzędziami Darwina, z którymi jest dostarczany OS X.

Po zainstalowaniu GNU Core Utilites możesz teraz:

gls -X

I zobaczysz wynik sortowany według własnego uznania.

Jeśli chcesz używać GNU Core Utils zamiast narzędzi dostarczanych z OS X, możesz wstawić następujący wiersz w ~/.bashrc pliku :

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

I nie będziesz już musiał używać gprefiksu poleceń. Powiem, że nie jest to całkowicie bezpieczne, ponieważ niektóre narzędzia GNU różnią się od wbudowanych bashów i narzędzi Darwina sposobem, w jaki się zachowują, na tyle, że mogą zepsuć inne rzeczy w twojej sesji powłoki. Więc rób to ostrożnie.

Ian C.
źródło
1

Na podstawie odpowiedzi w połączonym artykule Super User :

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

Jeśli chcesz zobaczyć cały wynik ls -l, po prostu pomiń tę cutczęść.

nohillside
źródło