I would just like point out this answer by @Gilles in Exclude paths that make find complain about permissions - Unix & Linux Stack Exchange; it basically involves a construct for
find that makes it not descend unreadable directories, and in that sense, is probably also a bit faster.
This would seem to work for me:
find or any other
find that supports the
find / -type d ! -readable ! -executable -prune -o -type f -name netcdf -print
(Edit: just tried this exact command, and I got "find: '/var/lib/php5': Permission denied", where it has permissions
drwx-wx-wt, and owned by
root; but the following command didn't report a single permission denied: )
or also this:
find / -type d ! -perm -g+r,u+r,o+r -prune -o -type f -name 'netcdf' -print
For some reason, I need to add all of the
g+r,u+r,o+r (shortcut for that is
a+r), otherwise if one of them is left out, I may still get "Permission Denied" hits.
Here is a breakdown of how I see this (note the
-a (and) operator in
find is implicit between two predicates):
find / # find starting from path /
-type d # match type is directory
! -perm -a+r # (and) match not permissions of `r`ead present
-prune # ignore what matched above and do not descend into it
-o # or (whatever didn't match above)
-type f # match type is file
-name 'netcdf' # (and) match name is 'netcdf'
-print # print what matched above
Note that without the last
-print, I get some extra items shown (that have nothing to do with
-name 'netcdf'); the
-print ensures that only the name matches are printed (if any).