Alle Dateien, die einem bestimmten Benutzer gehören, werden rekursiv angezeigt

32

Ist es möglich, alle Dateien zu finden und anzuzeigen, die einem bestimmten Benutzer gehören? Ich habe einige Dinge als falscher Benutzer getan und muss dem richtigen Benutzer den Besitz der Dateien geben.

Gibt es eine rekursive und bedingte Möglichkeit, eine Reihe von Dateien und Verzeichnissen zu erstellen?

Michael Wasserfall
quelle

Antworten:

60

Sie können diesen portablen Befehl find mit so etwas verwenden.

find . -user old-user -exec chown new-user:new-group {} \;

Sie können dies erweitern, um bestimmte Dateien mit -iname-Optionen zu finden (nicht POSIX, aber verfügbar unter OSX).

find . -iname '*.html' -user www-data -exec chown www-data:www-data {} \;

Das . steht für den aktuellen Ordner und darunter, sodass Sie einen bestimmten Pfad als Basis verwenden können.

find /var/www/ -iname '*.html' -user www-data -exec chown www-data:www-data {} \;
StephenTrapped
quelle
Was ich gesucht habe. Aber nur zu beachten, dass die Optionen nach dem new-user:new-usernew-user:new-group
Chown
2
Ich vermute, die geschweiften Klammern sollten in Anführungszeichen stehen, um Pfade mit Leerzeichen richtig zu behandeln. Alsofind . -user old-user -exec chown new-user:new-group "{}" \;
Dan Benamy
Falls jemand anders nach Dateien sucht, die keinem bestimmten Benutzer gehören (Benutzerdateien in einem Ausgangsverzeichnis, die nicht diesem Benutzer gehören), können Sie '!' Hinzufügen. zu dem -user other-userAbschnitt, um das Gegenteil zu finden. Zum Beispiel find . ! -user other-user.
Jon
Oft ist das oben Gesagte beim Hinzufügen nützlicher -group old-group. Auf diese Weise können Sie die Gruppenzugehörigkeit (Administrator, Mitarbeiter, dummer
anderer
ps - chown kann sudo erfordern
brianlmerritt
12

Sie können verwenden

chown --from=CURRENT_OWNER:CURRENT_GROUP -R new_owner:new_group  *

Aus dem Handbuch chown --help:

  --from=CURRENT_OWNER:CURRENT_GROUP
                     change the owner and/or group of each file only if
                     its current owner and/or group match those specified
                     here.  Either may be omitted, in which case a match
                     is not required for the omitted attribute.

edit : Das funktioniert natürlich nur unter Linux und den meisten UNIces. Für OSX (das auf BSD basiert) siehe die Lösung von @StephenTrapped.

Rik
quelle
+1, aber das funktioniert unter OSX chownnicht, es gibt diese Option nicht, siehe hier .
Terdon
Ups, in der Tat, ich habe das Tag osx verpasst :) Voted @StephenTrapped up.
Rik
chown --from=CURRENT_OWNER:CURRENT_GROUP -R new_owner:new_group *wird ausgeblendete Dateien überspringen, der Befehl wird ausgeführt, chown --from=CURRENT_OWNER:CURRENT_GROUP -R new_owner:new_group .funktioniert jedoch auch für die ausgeblendeten Dateien im übergeordneten Ordner.
Lashae
3

Die -hOption chown ändert die Berechtigung der symbolischen Linkdateien selbst und nicht nur des Ziels.

Dies kann bei Software-Binärordnern von entscheidender Bedeutung sein, bei denen mithilfe von symbolischen Links zwischen den Versionen gewechselt wird.

find . -user old-user -exec chown -h new-user:new-group {} \;

Tarun
quelle