Как я могу отсортировать ls по владельцу и группе?

Ответы:

8

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

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

Он напечатает имя пользователя, имя группы и имя файла, при условии, что имя файла не содержит пробелов. Кроме того, вы можете ввести:

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

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

Обратите внимание, что в зависимости от вашего распределения фактические номера столбцов могут отличаться. Я попробовал мой в SUSE и coreutils версии 5.2.1.

Возможно, есть лучшие, более сложные решения, но это самое простое и будет работать большую часть времени.

Петерзон
источник
1
s / номера строк / номера столбцов /
приостановлены до дальнейшего уведомления.
7

Как сказал Петерсон, нечто похожее на:

  • ls -l | awk '{print $3, $4, $8, $0}' | sort | column -t
    добавил $8и column -tдля довольно печати

Или даже лучше:

  • ls -l | sort -k 3 - сортирует по владельцу и по умолчанию сортирует следующее поле (группу) и включает
  • ls -l | sort -k 4,4 -k 3 - сортировка по группе, а затем по владельцу
  • ls -l | sort -k 3,3 -k 8 - сортировка по владельцу, а затем по имени файла

Примечание: запятая является полем терминатора, поэтому 3,3начинается и заканчивается в поле 3, 3,5сортируется по полям с 3 по 5.

vol7ron
источник
Чтобы отсортировать по группе, а затем по владельцу, мне пришлось добавить -b, чтобы игнорировать начальные пробелы, иначе список будет отсортирован по длине строки имени владельца.
Стефан Шмидт