How to get a list of all owners of files in a directory
You can use find
to print the user (owner) and group and then extract the uniq combinations e.g.
$ sudo find /var -printf '%u:%g\n' | sort -t: -u
_apt:root
avahi-autoipd:avahi-autoipd
clamav:adm
clamav:clamav
colord:colord
daemon:daemon
lightdm:lightdm
lp:lp
man:root
root:adm
root:crontab
root:lp
root:mail
root:mlocate
root:root
root:shadow
root:staff
root:syslog
root:utmp
root:whoopsie
speech-dispatcher:root
statd:nogroup
steeldriver:crontab
steeldriver:lightdm
steeldriver:steeldriver
syslog:adm
systemd-timesync:systemd-timesync
testuser:crontab
stat -c %U *
will list owners of all files.
This can be sorted and duplicates removed by piping it into sort -u
:
stat -c %U * | sort -u
As pointed out by steeldriver, this is not recursive. I missed that this was asked for. It can be made recursive by enabling globstar:
shopt -s globstar
stat -c %U **/* | sort -u
Alltogether, steeldriver's answer is probably better and should be the accepted answer here :)
You may find it more efficient to directly search for the files not owned by the user ...
find /directory ! -user username -printf "%u %p\n"