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


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.


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.


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.