如何计算每个用户/组组合有多少个文件?

如何计算每个用户/组组合有多少个文件?

如何计算每个用户/组组合有多少个文件?我需要对每个目录树 /etc、/usr 和 /var 中存在的每个用户/组组合执行此操作。

答案1

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

对于 /etc /usr /var 中的 i; do (find $i -type f -printf "$i -> %u:%g\n" 2> /dev/null) |排序|唯一-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。我对结果进行排序,然后进行唯一计数,输出数字和唯一字符串。

相关内容