Obecnie próbuję naprawić mój system przydziałów. Mój problem polega na tym, że nie mogę ustalić, czy wszystkie pliki w katalogu są własnością tego samego użytkownika. Jeśli to możliwe, istnieje sposób na wylistowanie różnych właścicieli plików w katalogu (rekurencyjnie).
na przykład get-owners-of DIRNAME
command-line
permissions
filesystem
quota
Jack7076
źródło
źródło
Odpowiedzi:
Możesz użyć
find
do wydrukowania użytkownika (właściciela) i grupy, a następnie wyodrębnić kombinacje uniq, npźródło
-mindepth 1
wcześniej-printf
. I nie zawarłbymsudo
w tym przykładzie, gdy OP wydaje się nie działać w kontekście, w którym jest to wymagane.-t:
robi to różnicę w tym kontekście?wyświetli listę właścicieli wszystkich plików.
Można to posortować i usunąć duplikaty, przesyłając je do
sort -u
:Jak zauważył Steeldriver, nie jest to rekurencyjne. Tęskniłem za tym, o co mnie proszono. Można go rekurencyjnie włączyć globstar:
Podsumowując, odpowiedź steeldrivera jest prawdopodobnie lepsza i powinna być tutaj odpowiedzią przyjętą :)
źródło
ARG_MAX
jest to problem, który możesz zrobićprintf '%s\0' **/* | xargs -0 stat -c %U
(ponieważprintf
jest wbudowany, nie powinien mieć takiego samego ograniczenia długości)Bardziej efektywne może być bezpośrednie wyszukiwanie plików nie należących do użytkownika ...
źródło
Metoda majsterkowania za pomocą Pythona:
Powoduje to iterację wszystkich nazw plików wymienionych w wierszu poleceń, pobiera identyfikator UID właściciela pliku, a przy użyciu modułu pwd otrzymuje nazwę użytkownika właściciela. Następnie nazwa pliku i nazwa użytkownika dołączyły się do ładnego drukowania i zostały rozdzielone dwukropkiem. Działa tak:
źródło