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

Print file count owned by a given user

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

set dirname = "a/b/c"

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

您可以使用 stat idawk 来执行以下操作:

$ cd /var
$ stat -f '%u%t%N' * | awk -F$"\t" '{fn[][]} 
                                    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),但你明白了。

我觉得你想做这样的事情:

find $dirname -printf "%u %s\n" \
 | awk '{s[]+=;c[]++}END{for(u in s) print u,s[u],c[u]}

这将打印一个用户列表以及总的累积文件大小和文件总数。