Powiedz „ls”, aby sortowało według zwykłych kodów ASCII, a nie „inteligentnie”


13

Mam kilka plików i lssortuję je w następujący sposób:

a
_b
c

ale chcę mieć

_b
a
c

Jak mogę to zrobić?


2
Czy mogę zapytać dlaczego?
RolandiXor

2
Używam podkreślnika do oznaczania specjalnych katalogów, które muszą przejść na górę. W folderze moich projektów mam projekty proj_a, proj_b i _old_projects. Nie ma sensu, jeśli ten folder jest w ramach o-projektów.
Martin Ueding

Odpowiedzi:


9

Jako jednorazowe polecenie możesz to zrobić:

LC_COLLATE=C ls

Możesz też dodać export LC_COLLATE="C"do .bashrc, aby ustawić go na stałe (może mieć nieoczekiwane sortowanie wyników w innym miejscu).

Więcej informacji na forach Ubuntu .


1
Sądzę, że po prostu alias z tym, aby nie miał skutków ubocznych.
Martin Ueding

To mi nie działa. Rozumiem -> paste.pocoo.org/show/403333 (to niemiecki, ale to nie powinno mieć znaczenia)
dAnjou,

2
@dAnjou LC_COLLATE=Cls ustawia tradycyjny porządek sortowania POSIX, według ASCII, w którym wielkie litery występują przed podkreśleniem. Aby posortować podkreślenia przed dużymi literami, musisz znaleźć się pod maską i utworzyć niestandardową definicję ustawień regionalnych w / usr / share / i18n / locales.
misterben

2
Mogło to działać w przeszłości, ale nie działa na Ubuntu 12.04.
Mikel

1
Począwszy od Ubuntu 14.04, LC_COLLATE=C lsnie działa, ale LC_ALL=C lsdziała.
jwodder

6

Na wypadek, gdyby nie było wbudowanego sposobu, możesz użyć prostego zamiennika dla sort:

#!/usr/bin/env python

import sys

for i in sorted(sys.stdin):
    sys.stdout.write(i)

Zapisz go, na przykład, w /bin/pysorti wykonaj jako ( sudo cp whatever.py /bin/pysorti sudo chmod a+x /bin/pysort), i uruchom go jako ls | pysort:

stefano@lenovo:~/t$ ls | pysort
_b
a
c

1
Prawdopodobnie włożyłbym to, ~/binale niezły awaria. Prawdopodobnie lepiej jest używać globowania w pythonie, ponieważ wyjście ls może być dziwne, jeśli nazwa pliku zawiera nowy wiersz.
Martin Ueding

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.