Распечатать количество файлов, принадлежащих данному пользователю - PullRequest
0 голосов
/ 29 июня 2018

Как напечатать количество файлов, принадлежащих каждому пользователю в данном каталоге? Пока я печатаю имя пользователя и размер диска. Однако я хочу сообщить о выводе «find $dirname -user <user_name>| wc -l» и вывести его в качестве третьего поля в приведенном ниже printf

set dirname = "a/b/c"

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

Ответы [ 2 ]

0 голосов
/ 29 июня 2018

У меня такое чувство, что вы хотите сделать что-то вроде этого:

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

Будет напечатан список пользователей с общим накопленным размером файла и общим количеством файлов.

0 голосов
/ 29 июня 2018

Вы можете использовать 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), но вы поняли идею.

...