Domyślnie polecenie ls sortuje według nazwy pliku, ale chcę, aby katalogi pojawiały się przed innymi typami plików. Mogę nawet chcieć sortować pliki według rozszerzeń, tak jak w Eksploratorze Windows sortowanie według kolumny typu. Czy istnieje sposób na zrobienie czegoś podobnego z ls?
44
--sort=extension
i--group-directories-first
(lub tylko--group-directories
) działa dla mnie dobrze na Ubuntu 12.10. Warto też spróbować na swoim komputerze! =)-X / --sort=extension
z połączeniem się z--group-directories-first
czymkolwiek, co wypróbowałem na współczesnych dystrybucjach Linuksa. OP odnosi się do Fedory Core 8 (wydanej w 2007 r.), Więc są szanse, że takie problemy są w odległej przeszłości.W systemie Linux
(
man ls
jest twoim przyjacielem!)źródło
gls --group-directories-first
na Macu, jeśli instalujeszGNU Core utils
przez homebrew-X to opcja, której szukasz:
źródło
Na bashu będzie to działać:
Od
man rev
:Więc 1. ls daje wynik, z dowolnymi flagami 2. każda linia jest odwrócona 3. następnie są sortowane 4. i odwrócone 5. w ten sposób:
Lub bardziej konkretnie, jak poniżej. Są one sortowane według ostatniego znaku, a następnie od ostatniego itd. Na przykład wszystkie pliki .rtf są wyświetlane razem, po pliku .save i innym pliku bez rozszerzenia, którego nazwa kończy się na „e”. Potem przychodzą pliki .png i tak dalej. Będzie to również działać z ls -l, ponieważ rozszerzenie jest zwykle ostatnią rzeczą w linii (wyjątki, jeśli masz linie takie jak „tmp @ -> / home / jones / tmp”, gdzie po linkach znajdują się ich cele).
źródło
ls -F
-F
), gdyby przepuszczono gorev
isort
nie usunięto koloru (-G
).Jeśli nie korzystasz z systemu Linux,
powinien najpierw posortować katalogi (daj mi znać, jeśli się mylę). Jednak nie sortuje według rozszerzenia: jeśli chcesz to zrobić, musisz znacznie zwiększyć obciążenie instrukcji awk ...
Aby również działał z nazwami zawierającymi spacje, prawdopodobnie zastąpiłbym awk czymś takim, jak
sed -E -e 's/([^ ]+[ ]+){8}//'
usunięcie pierwszych 8 pól zamiast drukowania 9.źródło
CLICOLOR
to, usunie kolorowanie.sed -E -e 's/([^ ]+[ ]+){8}//'
rozebrania pierwszych 8 pól zamiast drukowania 9ls -l |sort -d -k 1.1,1.1r -k 9 | cut -c 50-
Jeśli pracujesz w systemie Linux, GNU
ls
obsługuje--sort
opcję: -źródło
Dobrym podejściem jest najpierw oddzielenie folderów , a następnie posortowanie plików według rozszerzeń , SORTOWANIE i ODWRÓCENIE:
źródło
Dodałem do mojego .bashrc (linux) linię
w ten sposób po prostu wpisuję lx i sortuję według rozszerzenia.
źródło
ls -X
:)