Respuestas:
La utilidad find (1) tiene primarios que se pueden negar ("revertir") usando el "!" operador. Sin embargo, en la solicitud, uno debe escapar de la negación con una barra invertida, ya que es un metacarácter de shell. Resultado:
find . \! -user foo -print
xargs -I{} -P3 -- ${cmdhere} {}
puede hacer que $ {cmdhere} opere en cada archivo en paralelo. cmdhere :: = utilidades estándar de Unix; utilidades estándar de Unix :: = chmod, chown, stat, ls, ...
find . ...
tubería a xargs
la primera o segunda forma?
find . ! -user foo -exec chown <owner>:<group> {} \;
Buscando archivos que NO son propiedad de alguien
Otros han respondido la pregunta "NO es propiedad de un usuario en particular" en el cuerpo. Aquí hay una que responde a la pregunta titular pero no se ha proporcionado:
$ find / -nouser
Puedes usarlo así:
$ sudo find /var/www -nouser -exec chown root:apache {} \;
Y uno relacionado:
$ find / -nogroup
-user
busca por usuario o ID de usuario e !
invierte el predicado. Por lo tanto, ! -user ...
.
Puedes usar esto:
find <dir> ! -user <username>
Usando z-shell (zsh) puedes usar
ls -laR *(^U)
o
ls -la **/*(^U)
para buscar todos los archivos de forma recursiva que no sean de su propiedad.
-a
bandera debido a la expansión de comodines. Para la captura de puntos archivos utilizan el zsh dotglob
opción: setopt dotglob
. En una línea: (setopt dotglob; ls **/*(^U) )
. Los paréntesis deben ejecutarse en una subshell para que no tenga que ejecutarse una setopt nodotglob
vez que haya terminado.
!
parece ser opcional