Atualmente, estou tentando corrigir meu sistema de cotas. Meu problema é que não consigo determinar se todos os arquivos em um diretório pertencem ao mesmo usuário. Se possível, existe uma maneira de listar os diferentes proprietários de arquivos em um diretório (recursivamente).
por exemplo get-owners-of DIRNAME
command-line
permissions
filesystem
quota
Jack7076
fonte
fonte
Respostas:
Você pode usar
find
para imprimir o usuário (proprietário) e o grupo e extrair as combinações uniq, por exemplofonte
-mindepth 1
antes-printf
. E eu não incluiriasudo
no exemplo quando o OP não parece funcionar em um contexto em que é necessário.-t:
diferença neste contexto?listará os proprietários de todos os arquivos.
Isso pode ser classificado e as duplicatas removidas, canalizando-o para
sort -u
:Como apontado pela chave de aço, isso não é recursivo. Eu perdi que isso foi solicitado. Pode tornar-se recursivo ativando a globstar:
No geral, a resposta da steeldriver provavelmente é melhor e deve ser a resposta aceita aqui :)
fonte
ARG_MAX
é uma questão que você poderia fazerprintf '%s\0' **/* | xargs -0 stat -c %U
(uma vez queprintf
é um builtin, não deve ter a mesma limitação de comprimento)Você pode achar mais eficiente procurar diretamente os arquivos que não pertencem ao usuário ...
fonte
Método DIY via Python:
Isso itera sobre todos os nomes de arquivos listados na linha de comando, obtém o UID do proprietário do arquivo e, usando o módulo pwd , obtém o nome de usuário do proprietário. Depois disso, o nome do arquivo e o nome de usuário se juntaram para uma bonita impressão e foram separados por dois pontos. Funciona assim:
fonte