сортировка ls-l владельцев в Unix - PullRequest
5 голосов
/ 10 ноября 2010

Я хочу отсортировать владельцев в алфавитном порядке по вызову ls -l и не могу найти способ сделать это. Я знаю что-то вроде ls-l | sort сортирует имя файла, но как отсортировать владельцев по порядку?

Ответы [ 4 ]

10 голосов
/ 10 ноября 2010

Владелец - третье поле, поэтому используйте -k 3:

ls -l | sort -k 3

Вы можете распространить эту идею на сортировку по другим полям, и у вас может быть несколько вариантов -k. Например, может быть, вы хотите отсортировать по владельцу, а затем по размеру в порядке убывания:

ls -l | sort -k 3,3 -k 5rn
1 голос
/ 10 ноября 2010

Я не уверен, хотите ли вы, чтобы только владельцы или вся информация сортировались по владельцам. В первом случае решение superfo почти правильное. Кроме того, вам необходимо удалить повторяющиеся пробелы из вывода ls с помощью tr , поскольку в противном случае cut , который использует их в качестве разделителя, не будет работать во всех каталогах. *

Итак, в итоге вы получите:

ls -l | tr -s ' ' | cut -d ' ' -f 3 | sort | uniq

* Некоторые каталоги имеют двузначное значение во втором поле, а все остальные строки с одной цифрой получают дополнительный пробел для сохранения макета.

0 голосов
/ 10 ноября 2010

Попробуйте это:

ls -l | awk '{print $3, $4, $8}' | sort

Будет напечатано имя пользователя, имя группы и имя файла. (Имя файла не может содержать пробелы)

ls -l | awk '{print $3, $4, $0}' | sort

При этом будут напечатаны имя пользователя, имя группы и полный вывод ls -l, отсортированный сначала по имени пользователя, затем по имени группы, а затем по первому выводу ls -l

0 голосов
/ 10 ноября 2010

Как насчет ...

ls -l | cut -d ' ' -f 3 | sort | uniq
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...