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

После того, как вы смонтировали их куда-нибудь (/media/usb), выполните chroot /media/usb /bin/bash, чтобы войти в систему USB. Сделайте все, что вам нужно, и выйдите после этого. Замените /bin/bash, если вы предпочитаете другую оболочку или bash недоступен.

0
27.01.2016, 00:21
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 печатает для каждого файла строку вида username: groupname .

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

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

2
29.04.2021, 00:18

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

вывод:

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

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

0
29.04.2021, 00:18

Теги

Похожие вопросы