ls -l с некоторыми изменениями - PullRequest
2 голосов
/ 17 ноября 2011

Я хотел внести некоторые изменения в команду ls -l.

Во-первых, я хотел удалить первую строку «всего Х», поскольку я не использую ее.

Тогда я хотел показать каталоги самым верхним. (Или, точнее, сортировка по типу.)

В-третьих, я хотел отсортировать по имени в случаях идентичного типа.

Было бы почти тривиально писать на скрипте или на функциональном языке, или даже на C, но меня вдохновило то, что я прочитал, что вы не должны писать новые вещи для всего, а скорее комбинировать инструменты, которые у вас есть. Через несколько часов (!!) я придумал:

ls -l | tac | head -n -1 | sort -k 1.1,1.2 -k 9

Чувствую себя немного глупо, это похоже на работу. Но:

Медленнее:

real 0m0.009s
user 0m0.008s
sys 0m0.008s

вместо ls -l:

real 0m0.003s
user 0m0.004s
sys 0m0.000s

Нет цветов! (С ls -l словари синего цвета и т. Д.)

Итак, если вы знаете лучший способ, стреляйте :) 1022 *

Ответы [ 3 ]

5 голосов
/ 17 ноября 2011

man ls, я имею в виду на самом деле, попробуйте.

Для 2-го, 3-го и без цветов

$> ls -l --group-directories-first --sort=extension --color=never

Если вам нужны цвета, вы должны использовать --color=auto или --color=always.

Для 1-го вопроса есть, например, дубликат .

На самом деле, вы можете удалить первую строку с помощью awk:

awk '{ if ( NR > 1 ) print }'

Итак, результирующая команда выглядит как

$> ls -l --group-directories-first --sort=extension --color=always | awk '{ if ( NR > 1 ) print }'
3 голосов
/ 17 ноября 2011

ls -l --group-directories-first -X --color=always | tail -n +2

  • - group-directory-first - Вид очевидного
  • -X - сортировка по расширению
  • - color = всегда - даже выводить цвета, когда не записываете в tty (что мы не делаем, потому что мы передаем head)
0 голосов
/ 17 ноября 2011

Что касается цветов, вы можете использовать ls --color=yes.

...