Чи можете ви сортувати ls список за назвою?
Чи можете ви сортувати ls список за назвою?
Відповіді:
Моє сортування за назвою за замовчуванням. Що ти бачиш?
man ls
констатує:
List information about the FILEs (the current directory by default). Sort entries alpha‐betically if none of -cftuvSUX nor --sort is specified.
:
ls
не сортується, якщо -c1
вказано: чи є спосіб зробити це? ( --sort=name
здається, не працює)
ls -la
, я бачу:, .bashrc - can - .config - Downloads - .local - tmp
сортувати назву було б:.bashrc - .config - .local - Downloads - can - tmp
Щось просте, ви можете комбінувати ls з сортуванням . Для лише списку імен файлів:
ls -1 | сортувати
Сортувати їх у зворотному порядку:
ls -1 | сортувати -р
ls | sort -n
1.1.1; 1.1.2; 1.1.3; 2.10.1; 2.10.15; 2.10.2; 2.10.20; 2.10.21; 2.1.1; 2.1.10; 2.1.15; 2.1.2; 2.1.3; 2.1.4; 10.1.1; 10.1.2; 10.1.3; 11.0.1; 11.0.2; 11.0.20; 11.0.21; 11.0.22; Як бачимо 2.10.15 до 2.10.2 .
ls -1r
.
ls
з за замовчуванням coreutils
виконує сортування, що знає локальну мову , і, таким чином, може створювати дивовижні результати в деяких випадках (наприклад, %foo
буде сортувати між bar
і quux
в LANG=en_US
). Якщо ви хочете сортувати ASCII, використовуйте
LANG=C ls
LANG
якщо я подумаю про подібну поведінку, цей пост мені дуже допомагає!
?
для кожного символу, що не відповідає, коли вихід є термінальним (погана особливість ls перевірити, чи він виводиться на термінал, працювати при трубопроводі). Ви можете "виправити" це за допомогою трубопроводу до кота, скористайтесь C.UTF-8
локалом (якщо ваша система його підтримує) та / або використовуйте -b
прапор. Ще краще, не використовуйте ls
взагалі, краще використовуйте `
ls
сортує дефіси перед тире.
Краса інструментів * nix полягає в тому, що ви можете їх поєднувати:
ls -l | sort -k9,9
Вихід ls -l
буде виглядати приблизно так
-rw-rw-r-- 1 luckydonald luckydonald 532 Feb 21 2017 Makefile
-rwxrwxrwx 1 luckydonald luckydonald 4096 Nov 17 23:47 file.txt
Отже, 9,9
ви сортуєте стовпчик 9
до стовпця 9
, будучи іменами файлів. Ви повинні вказати, де зупинитись, що є тим самим стовпцем у цьому випадку. Стовпці починаються з 1
.
Крім того, якщо ви хочете ігнорувати верхній / нижній регістр, додайте --ignore-case
до команди сортування.
-k9,9
означає?
9
до того ж стовпця 9
. Нормальний ls
вихід виглядає приблизно так: drwx------ 8 999 user 4.0K Feb 5 2017 file.txt
тому колонка 9 є іменами файлів. Якщо ви хочете ігнорувати випадок, використовуйте --ignore-case
сортування.
ПОВІДОМЛЕННЯ: "a" відбувається ПІСЛЯ "Z":
$ touch A.txt aa.txt Z.txt
$ ls
A.txt Z.txt aa.txt
normal
рішення тут.
Файли, що відрізняються лише числовим рядком, можна сортувати за цим номером за умови, що йому передує роздільник.
У цьому випадку можна використовувати наступний синтаксис:
ls -x1 file | sort -t'<char>' -n -k2
Приклад:
ls -1 TRA*log | sort -t'_' -n -k2
TRACE_1.log
TRACE_2.log
TRACE_3.log
TRACE_4.log
TRACE_5.log
TRACE_6.log
TRACE_7.log
TRACE_8.log
TRACE_9.log
TRACE_10.log
На сторінці man (для bash ls):
Сортуйте записи в алфавітному порядку, якщо жодна з -cftuSUX або --sort.
which ls
досягли б успіху, навіть якщо баш мав вбудований ls. Швидше, робити builtin ls
в баш, і помилитися.
which
завжди повертає шлях. Використовуйте type ls
для визначення того, що думає оболонка ls
(вбудована, функціональна, виконувана).
ls
Утиліта має відповідати IEEE Std 1003.1-2001 ( POSIX.1
) , який говорить:
22027: вона сортуватиме операнди каталогів та не-каталогів окремо відповідно до послідовності згортання у поточному локалі.
26027: За замовчуванням формат не визначений, але вихід має бути відсортований за алфавітом за назвою символу:
- Назва бібліотеки чи об'єкта, якщо вказано −A
- Назва символу
- Тип символу
- Значення символу
- Розмір, пов’язаний із символом, якщо це можливо
Перевірте свій .bashrc
файл на псевдоніми.
alias
щоб перевірити наявність усіх поточних псевдонімів.
In Debian Jessie, this works nice:
ls -lah --group-directories-first
# l=use a long listing format
# a=do not ignore entries starting with .
# h=human readable
# --group-directories-first=(obvious)
# Note: add -r for reverse alpha
# You might consider using lh by appending to ~/.bashrc as the alias:
~$ echo "alias lh='ls -lah --group-directories-first'" >>~/.bashrc
# -- restart your terminal before using lh command --