打印给定用户拥有的文件数
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
id
和 awk
来执行以下操作:
$ 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]}
这将打印一个用户列表以及总的累积文件大小和文件总数。
如何打印给定目录中每个用户拥有的文件数?
到目前为止,我正在打印用户名和磁盘大小。但是我想报告“find $dirname -user <user_name>| wc -l
”的输出并将其作为第三个字段打印在下面的 printf
set dirname = "a/b/c"
find $dirname -printf "%u %s\n"
您可以使用 stat
id
和 awk
来执行以下操作:
$ 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]}
这将打印一个用户列表以及总的累积文件大小和文件总数。