Actualmente estoy tratando de arreglar mi sistema de cuotas. Mi problema es que no puedo determinar si todos los archivos en un directorio son propiedad del mismo usuario. Si es posible, hay una manera de enumerar los diferentes propietarios de archivos en un directorio (recursivamente).
p.ej get-owners-of DIRNAME
command-line
permissions
filesystem
quota
Jack7076
fuente
fuente
Respuestas:
Puede utilizar
find
para imprimir el usuario (propietario) y el grupo y luego extraer las combinaciones uniq, por ejemplofuente
-mindepth 1
antes-printf
. Y no incluiríasudo
en el ejemplo cuando OP no parece funcionar en un contexto donde se requiere.-t:
Hay alguna diferencia en este contexto?enumerará los propietarios de todos los archivos.
Esto se puede ordenar y eliminar los duplicados al conectarlo a
sort -u
:Como señaló Steeldriver, esto no es recursivo. Extrañé que esto fuera solicitado. Se puede hacer recursivo habilitando globstar:
En conjunto, la respuesta de Steeldriver es probablemente mejor y debería ser la respuesta aceptada aquí :)
fuente
ARG_MAX
es un problema que podría hacerprintf '%s\0' **/* | xargs -0 stat -c %U
(ya queprintf
es una orden interna, no debe tener la misma limitación de longitud)Puede que le resulte más eficiente buscar directamente los archivos que no son propiedad del usuario ...
fuente
Método de bricolaje a través de Python:
Esto itera sobre todos los nombres de archivo enumerados en la línea de comandos, obtiene el UID del propietario del archivo, y el uso del módulo pwd obtiene el nombre de usuario del propietario. Después de eso, el nombre de archivo y el nombre de usuario se unieron para una impresión bonita y se separaron por dos puntos. Funciona así:
fuente