9

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

2 ответа2

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.

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

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.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .