Jak mogę posortować ls według właściciela i grupy?

9

Jak mogę wyświetlić katalogi za pomocą ls i posortować je według właściciela i grupy?

AnnanFay
źródło

Odpowiedzi:

8

Spróbuj tego:

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

Wydrukuje nazwę użytkownika, nazwę grupy i nazwę pliku, pod warunkiem, że nazwa pliku nie zawiera spacji. Możesz też wpisać:

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

Spowoduje to wydrukowanie nazwy użytkownika, nazwy grupy i pełnego ls -lwyniku, posortowanych według nazwy użytkownika, potem nazwy grupy, a następnie wszystkiego, co zostanie ls -lwydrukowane jako pierwsze.

Pamiętaj, że w zależności od dystrybucji rzeczywiste numery kolumn mogą się różnić. Próbowałem mój w SUSE i Coreutils w wersji 5.2.1.

Prawdopodobnie są lepsze, bardziej skomplikowane rozwiązania, ale jest to najprostsze i będzie działać przez większość czasu.

petersohn
źródło
1
s / numery wierszy / numery kolumn /
Wstrzymane do odwołania.
7

Jak powiedział Petersohn, coś podobnego do:

  • ls -l | awk '{print $3, $4, $8, $0}' | sort | column -t
    dodano $8i column -tdla ładnego wydruku

Lub nawet lepiej:

  • ls -l | sort -k 3 - sortuje według właściciela i domyślnie sortuje następne pole (grupę) i włączone
  • ls -l | sort -k 4,4 -k 3 - sortuje według grupy, a następnie według właściciela
  • ls -l | sort -k 3,3 -k 8 - sortuje według właściciela, a następnie według nazwy pliku

Uwaga: przecinek jest polem terminatora, więc 3,3zaczyna się i kończy w polu 3 3,5sortuje od pól 3 do 5.

vol7ron
źródło
Aby posortować według grupy, a następnie według właściciela, musiałem dodać -b, aby zignorować puste pola, w przeciwnym razie lista byłaby sortowana według długości ciągu nazwy właściciela.
Stefan Schmidt