给定用户拥有的打印文件数

时间:2018-06-28 22:40:07

标签: shell awk find csh

如何打印给定目录中每个用户拥有的文件数? 到目前为止,我正在打印用户名和磁盘大小。但是我想报告“ find $dirname -user <user_name>| wc -l”的输出,并在下面的printf

中将其打印为第三个字段
set dirname = "a/b/c"

    find $dirname -printf "%u %s\n" 

2 个答案:

答案 0 :(得分:2)

您可以使用stat idawk遵循以下原则进行操作:

$ 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]}

这会打印一个用户列表,其中包含累积的文件大小和文件总数。