Antworten:
Das Dienstprogramm find (1) verfügt über Primärdaten, die mit dem "!" Negiert ("umgekehrt") werden können. Operator. Bei der Eingabeaufforderung muss man der Negation jedoch mit einem Backslash entkommen, da es sich um ein Shell-Metazeichen handelt. Ergebnis:
find . \! -user foo -print
xargs -I{} -P3 -- ${cmdhere} {}
Wenn Sie die Ausgabe an weiterleiten , kann $ {cmdhere} für jede Datei parallel ausgeführt werden. cmdhere :: = Standard-Unix-Utils; Standard Unix Utils :: = chmod, chown, stat, ls, ...
find . ...
oder die Leitung zum xargs
ersten oder zweiten Weg?
find . ! -user foo -exec chown <owner>:<group> {} \;
Auf der Suche nach Dateien, die NICHT jemandem gehören
Andere haben die Frage "NICHT im Besitz eines bestimmten Benutzers" im Körper beantwortet . Hier ist eine, die die Titelfrage beantwortet, aber nicht bereitgestellt wurde:
$ find / -nouser
Sie können es so verwenden:
$ sudo find /var/www -nouser -exec chown root:apache {} \;
Und eine verwandte:
$ find / -nogroup
-user
Findet nach Benutzer oder Benutzer-ID und !
invertiert das Prädikat. Also , ! -user ...
.
Sie können dies verwenden:
find <dir> ! -user <username>
Mit z-shell (zsh) können Sie verwenden
ls -laR *(^U)
oder
ls -la **/*(^U)
um rekursiv nach allen Dateien zu suchen, die Ihnen nicht gehören.
-a
aufgrund der Platzhaltererweiterung keine Punktdateien auflistet, auch nicht mit dem Flag. Verwenden Sie die dotglob
Option zsh, um Punktdateien abzufangen : setopt dotglob
. In einer Zeile : (setopt dotglob; ls **/*(^U) )
. Die Klammern müssen in einer Unterschale ausgeführt werden, damit Sie nach Abschluss nicht mehr ausgeführt werden setopt nodotglob
müssen.
!
scheint optional zu sein