Como contar quantos arquivos pertencem a cada combinação de usuário / grupo?

0

Como contar quantos arquivos pertencem a cada combinação de usuário / grupo? Eu preciso fazer isso para cada combinação de usuário / grupo que existe, em cada uma das árvores de diretórios / etc, / usr e / var.

    
por Maxim Nesmashniy 26.01.2016 / 00:41

2 respostas

2

find . -type f -printf %u:%g\n | awk '{usergroup[$0]++}; END {for(key in usergroup) printf "%-20s %d\n",key,usergroup[key]}'
hl:hauke             401
hl:1003              10
root:root            1

find imprime para cada arquivo uma linha do tipo username:groupname .

awk usa uma matriz associativa para contar as ocorrências. Para cada linha, a variável com o conteúdo da linha como nome é incrementada.

Depois que awk leu a última linha, ele imprime as chaves e os valores da matriz.

    
por 26.01.2016 / 00:56
0

for i in /etc /usr /var; do (find $i -type f -printf "$i -> %u:%g\n" 2> /dev/null) | sort | uniq -c; done

output:

 2    /etc -> root:dip
 1    /etc -> root:fuse
 7    /etc -> root:lp
 2441 /etc -> root:root
 2    /etc -> root:shadow 
 ...

Eu percorro os diretórios que você queria (/ etc, / usr e var). Eu uso o comando find para encontrar todos os arquivos no diretório, e eu uso o printf para exibir o diretório e o usuário e grupo, eu redireciono os erros para / dev / null. Eu classifico os resultados e faço uma contagem única que gera o número e a string única.

    
por 26.01.2016 / 08:28