如何打印给定目录中每个用户拥有的文件数?
到目前为止,我正在打印用户名和磁盘大小。但是我想报告“ find $dirname -user <user_name>| wc -l
”的输出,并在下面的printf
set dirname = "a/b/c"
find $dirname -printf "%u %s\n"
答案 0 :(得分:2)
您可以使用stat
id
和awk
遵循以下原则进行操作:
$ cd /var
$ stat -f '%u%t%N' * | awk -F$"\t" '{fn[$1][$2]}
END{for (u in fn){
system("id -nu " u)
for (e in fn[u]) print "\t" e
}}'
打印
_jabber
jabberd
root
log
rpc
netboot
lib
db
agentx
run
mail
folders
vm
backups
spool
tmp
install
audit
root
empty
yp
msgs
_mobileasset
ma
daemon
rwho
at
_networkd
networkd
按照书面规定,它不支持其中带有\t
的文件名。不是一个非常困难的解决方案(只需将大于$ 2的字段并入\t
即可),但是您就明白了。
答案 1 :(得分:2)
我觉得您想做这样的事情:
find $dirname -printf "%u %s\n" \
| awk '{s[$1]+=$2;c[$1]++}END{for(u in s) print u,s[u],c[u]}
这会打印一个用户列表,其中包含累积的文件大小和文件总数。