Скажите `ls` сортировать по обычным кодам ASCII, а не" разумно "

У меня есть пара файлов и ls сортирует их так:

a
_b
c

но я хочу иметь

_b
a
c

Как я могу это сделать?

3 ответа

Решение

В качестве одноразовой команды вы можете сделать это:

LC_COLLATE=C ls

Или вы можете добавить export LC_COLLATE="C" на ваш.bashrc, чтобы сделать его постоянным (может иметь неожиданные результаты сортировки в другом месте).

Больше информации на форумах Ubuntu.

На случай, если для этого нет встроенного способа, вы можете использовать простую замену sort:

#!/usr/bin/env python

import sys

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

Сохраните это, например, в /bin/pysort и сделать его исполняемым (sudo cp whatever.py /bin/pysort а также sudo chmod a+x /bin/pysort), и запустите его как ls | pysort:

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

Было бы ls | sort не делать именно то, что вам нужно?

Другие вопросы по тегам