Как подсчитать, сколько файлов принадлежит каждой комбинации пользователей / групп?

Как подсчитать, сколько файлов принадлежит каждой комбинации пользователей / групп? Мне нужно сделать это для каждой комбинации пользователя / группы, которая существует, в каждой из деревов каталогов / etc, / usr и / var.

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 отпечатки для каждого файла строки имени username:groupname .

awk использует ассоциативный массив для подсчета вхождений. Для каждой строки переменная с содержимым строки как имя увеличивается.

После того, как awk прочитал последнюю строку, он печатает ключи и значения массива.

для i в / etc / usr / var; do (find $ i -type f -printf "$ i ->% u:% g \ n" 2> / dev / null) | сортировать | uniq -c; сделанный

вывод:

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

Я прокручиваю нужные каталоги (/ etc, / usr и var). Я использую команду find, чтобы найти все файлы в каталоге, и я использую printf для отображения каталога и пользователя и группы, я перенаправляю любые ошибки в / dev / null. Я сортирую результаты, а затем делаю уникальный счетчик, который выводит число и уникальную строку.