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 xargsersten 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
-userFindet 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.
-aaufgrund der Platzhaltererweiterung keine Punktdateien auflistet, auch nicht mit dem Flag. Verwenden Sie die dotglobOption 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 nodotglobmüssen.
!scheint optional zu sein