Как отсортировать лл вывод

ll верну этот результат:

 51380224 Aug 3 08:23 tig_10.d1 51380224 Aug 3 08:18 tig_10.d10 51380224 Aug 3 08:20 tig_10.d11 51380224 Aug 3 08:23 tig_10.d12 51380224 Aug 3 08:21 tig_10.d13 51380224 Jul 31 12:06 tig_10.d14 131072 Jul 31 12:06 tig_10.d15 51380224 Aug 3 08:15 tig_10.d2 51380224 Aug 2 23:08 tig_10.d3 51380224 Aug 2 14:24 tig_10.d4 51380224 Aug 2 14:24 tig_10.d5 51380224 Aug 3 08:21 tig_10.d6 51380224 Aug 3 08:22 tig_10.d7 51380224 Aug 3 08:13 tig_10.d8 51380224 Aug 3 08:20 tig_10.d9 

Не удалось перечислить файлы, как это

 51380224 Aug 3 08:23 tig_10.d1 51380224 Aug 3 08:15 tig_10.d2 51380224 Aug 2 23:08 tig_10.d3 51380224 Aug 2 14:24 tig_10.d4 51380224 Aug 2 14:24 tig_10.d5 51380224 Aug 3 08:21 tig_10.d6 51380224 Aug 3 08:22 tig_10.d7 51380224 Aug 3 08:13 tig_10.d8 51380224 Aug 3 08:20 tig_10.d9 51380224 Aug 3 08:18 tig_10.d10 51380224 Aug 3 08:20 tig_10.d11 51380224 Aug 3 08:23 tig_10.d12 51380224 Aug 3 08:21 tig_10.d13 51380224 Jul 31 12:06 tig_10.d14 131072 Jul 31 12:06 tig_10.d15 

Есть идеи как?

ls пересортирует имена файлов, которые вы ему даете (или текущий каталог, если вы этого не сделаете); Один из способов обойти это – дать ему имена файлов отдельно:

 ls -l *.d? ; ls -l *.d?? 

Или, поскольку у вас, кажется, есть псевдоним / функция для длинного листинга:

 ll *.d?; ll *.d?? 

Я не знаю, что у тебя есть. ll – это псевдоним ls -l , но это не похоже на это.

В любом случае этот конкретный вывод может быть отсортирован в том порядке, в котором вы хотите, с помощью sort GNU и его сортировки по версии, примененной к 5-му столбцу и более:

 ll | sort -bVk5 

Если ll является псевдонимом ls а ls – GNU ls , то для ls также включена сортировка версий с помощью -v .

С помощью оболочки zsh можно сортировать глобусы аналогичным образом с numericglobsort параметра numericglobsort или numericglobsort (n) glob. Поэтому, если ваша команда ll может получить список имен файлов в качестве аргумента и не выполняет дальнейшую сортировку, вы можете сделать это (только в zsh и zsh ):

 ll *(n) 

Используя sort :

 $ ls -lghFG | sort -n -td -k2 total 0 -rw-r--r-- 1 0 Aug 3 09:43 tig_10.d1 -rw-r--r-- 1 0 Aug 3 09:43 tig_10.d2 -rw-r--r-- 1 0 Aug 3 09:43 tig_10.d3 -rw-r--r-- 1 0 Aug 3 09:43 tig_10.d4 -rw-r--r-- 1 0 Aug 3 09:43 tig_10.d5 -rw-r--r-- 1 0 Aug 3 09:43 tig_10.d6 -rw-r--r-- 1 0 Aug 3 09:43 tig_10.d7 -rw-r--r-- 1 0 Aug 3 09:43 tig_10.d8 -rw-r--r-- 1 0 Aug 3 09:43 tig_10.d9 -rw-r--r-- 1 0 Aug 3 09:43 tig_10.d10 -rw-r--r-- 1 0 Aug 3 09:43 tig_10.d11 -rw-r--r-- 1 0 Aug 3 09:43 tig_10.d12 -rw-r--r-- 1 0 Aug 3 09:43 tig_10.d13 -rw-r--r-- 1 0 Aug 3 09:43 tig_10.d14 -rw-r--r-- 1 0 Aug 3 09:43 tig_10.d15 

Это будет использовать букву d в качестве разделителя и отсортировать результаты численно в поле 2, поэтому могут возникнуть проблемы, если ваши имена файлов содержат букву d .

Чтобы удовлетворить ваше требование использования ll (который является псевдонимом), вы можете сделать (не рекомендуется:

 alias ll='ls -lghFG | sort -n -td -k2' 

от man ,

ll -v

  • -v натуральный вид (версии) чисел в тексте