2013-08-24 2 views
2

Я пытаюсь найти способ, чтобы результаты команды ls печатались нечувствительным к регистру образом.Нечувствительная к регистру команда unix ls

в настоящее время является команда результаты в Ls:

Apple 
Boy 
Chart 
Dock 
apples 
boys 
charts 
docks 

то, что я хочу это:

Apple 
apples 
Boy 
boys 
Chart 
charts 
Dock 
docks 

это возможно?

+2

Смешной; одно из моих разочарований в том, что я получаю нечувствительную к регистру сортировку, которая раздражает дневные светы из меня, потому что я настолько привык к использованию зависящей от регистра версии, чтобы получить файлы, начинающиеся с заглавных букв в начале списка, но они больше не появляются. Это потому, что я использую локаль 'en_US.utf8', которая в основном правильная. Итак, я согласен с большинством наблюдений Кейта. –

ответ

7

ls (по крайней мере, если вы используете версию GNU coreutils; ls --version, чтобы проверить, что) сортирует имена файлов в соответствии с текущей локалью.

Набор доступных локалей варьируется от системы к системе (locale -a для списка), но в моей системе это:

LC_COLLATE=en_US.utf8 ls 

сортирует имена с a и A до b и B - хотя это не может точно в заказе, который вы ищете.

Это работает, даже если ls перечисляет файлы в нескольких столбцах, что трудно сделать с sort -f.

(у меня есть $LC_COLLATE набор для C специально так, что локаль-чувствительный сортировка производится в порядке ASCII.)

+0

, поэтому @keith Я быстро просмотрел Google и не совсем уверен, как изменить мою. Я думаю, что вы можете быть правы, что это то, что мне нужно, будет ли это что-то, что должно быть в файле .bashrc? похоже, что мой локаль настроен на: LANG = "en_US.UTF-8" LC_COLLATE = "en_US.UTF-8" – Andrew

+0

@Andrew: Это похоже на настройку любой другой переменной окружения (и не забудьте «экспортировать» Это). Если вам всегда нужны одни и те же настройки, добавление соответствующей команды в ваш '.bashrc' - это, вероятно, путь. Обратите внимание, что ваш язык также повлияет на расширение подстановок оболочки ('echo *') и даже 'sort'. Но с 'LC_COLLATE =" en_US.UTF-8 "вы должны * получать заказ, который вы хотите. В какой системе вы работаете? –

+0

прямо в этот момент im с использованием mac, но проблема происходит больше на работе, на машине Solaris. – Andrew

3

Просто подайте результат на sort -f.

+2

Не будет работать для 'ls -R' – mlt

0
# alias ll='(LC_COLLATE=en_US.utf8 && export LC_COLLATE && shopt -s nocaseglob && /bin/ls -alF --color=auto)' 
# ll 
+5

, пожалуйста, объясните свой код. – hgwhittle

0

В продолжение к [Keith Thompson] s ответ, я проверил на Linux и LC_COLLATE = C не работал для меня, но LC_COLLATE = "en_US.UTF-8". Я поставил следующий в моем сценарии запуска:

export LANG=en_US.UTF-8 
export LC_COLLATE="en_US.UTF-8" 

Это не работает на OS X.

1

Добавить в .profile: псевдоним LLG = 'Ls -ltr | Grep -i»

, то вы можете использовать следующую команду: LLG "неделя"

+0

Вы пробовали? Это не делает работу. – mpromonet

Смежные вопросы