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