Estoy buscando a mirar recursivamente a través de los directorios para encontrar los archivos que NO son propiedad de un usuario en particular y no estoy seguro de cómo escribir esto.

InformationsquelleAutor mike628 | 2011-05-08

5 Comentarios

  1. 250

    El find(1) utilidad ha primarias que pueden ser invalidados («al revés») utilizando el «!» operador. En el símbolo del sistema sin embargo uno debe escapar de la negación con una barra diagonal inversa como es un shell metacarácter. Resultado:

    find . \! -user foo -print
    • escapando de la ! parece ser opcional
    • la tubería de la salida a xargs ls -al puede dar más info de la -print bandera
    • la tubería de la salida a xargs -I{} -P3 -- ${cmdhere} {} puede tener ${cmdhere} operan en cada archivo en paralelo. cmdhere ::= estándar de unix utils; estándar de unix utils ::= chmod, chown, stat, ls, …
    • Esto NO funciona para recursiva archivo de encontrar!
    • ¿te refieres a los find . ... o la tubería para xargs la primera o la segunda forma?
    • encontrar tiene el -exec bandera -> find . ! -user foo -exec chown <owner>:<group> {} \;
    • xargs puede proporcionar un aumento significativo del rendimiento .v. -exec, desde chown puede tomar una lista de muchos archivos a chown en el mismo orden, el ahorro del costo de muchos ejecutivos.
    • cómo agregar información del propietario como de salida?
    • He utilizado -not para evitar que se escape el ! pero al parecer no es compatible con POSIX. Desde la página man: -not expr Same as ! expr, but not POSIX compliant..
    • ¿alguna vez la figura que fuera? me gustaría saber como de bien
    • El uso de printf opción de conseguir a lo largo de con nombre de archivo: find . \! -user foo -printf '%p - %u\n'. De hecho me acabo de enterar por la lectura de la ‘buscar’ comando manual como usted me recordó.
    • gracias! Y @Sorin, que hace el trabajo de forma recursiva para mí (centos 7 : find /ruta de acceso \! -usuario myUser)
    • El signo de exclamación deben ser escapado si Bash historia está activo ( set -H ), que es por lo general en forma predeterminada.

  2. 33

    Busca de archivos NO es propiedad de alguien

    Otros han respondido a la pregunta «NO es propiedad de un usuario en particular» en el cuerpo. Aquí está uno que responde a la titular de la pregunta, pero no ha sido siempre:

    $ find / -nouser

    Se puede utilizar como así:

    $ sudo find /var/www -nouser -exec chown root:apache {} \;

    Y una relacionada con:

    $ find / -nogroup
    • Te voy a dar un voto por el tecnicismo, pero la gente en general dicen que «no son propiedad de nadie», si lo que estaban interpretando.
    • Sí, suena bastante bien para aquellos nimio. El problema que se me planteaba era, necesitaba encontrar archivos, literalmente, no pertenece a ningún usuario. Salió a la superficie después de un servidor web de actualización y migración. Algunos de usuario/id de grupo cambió, así que necesitaba secuencia de comandos chown.
  3. 3

    El uso de z-shell (zsh) puede utilizar

    ls -laR *(^U)

    o

    ls -la **/*(^U)

    para buscar todos los archivos de forma recursiva no sea de su propiedad.

    • a diferencia de find -nouser; no mostrar dot archivos.
    • Es cierto que el comando anterior no aparecerá el listado de punto archivos, incluso con la -a bandera debido a la expansión de comodines. Para la captura de dot uso de los archivos de la zsh dotglob opción: setopt dotglob. En una línea: (setopt dotglob; ls **/*(^U) ). Los paréntesis son para que se ejecute en un subshell, de modo que usted no tiene que correr setopt nodotglob después de que hayas terminado.

Dejar respuesta

Please enter your comment!
Please enter your name here