Chciałbym tylko wskazać na tę odpowiedź @Gilles w Wyklucz ścieżki, które sprawiają, że znajdowanie narzeka na uprawnienia - Unix i Linux Stack Exchange ; w zasadzie zawiera konstrukcję, findktóra sprawia, że nie schodzi ona z nieczytelnych katalogów, i w tym sensie jest prawdopodobnie również nieco szybsza.
To wydaje się działać dla mnie:
Z GNU findlub dowolnym innym, findktóry obsługuje -readablei -executablepredykaty:
find / -type d ! \( -readable -executable \) -prune -o -type f -name netcdf -print
lub też to:
find / -type d ! -perm -g+r,u+r,o+r -prune -o -type f -name 'netcdf' -print
Z jakiegoś powodu muszę dodać wszystkie g+r,u+r,o+r(do tego skrót a+r), w przeciwnym razie, jeśli jeden z nich zostanie pominięty, nadal mogę otrzymać trafienia „Odmowa zezwolenia”.
Oto podział tego, w jaki sposób to widzę (zauważ, że -aoperator (i) findjest ukryty między dwoma predykatami ):
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
Zauważ, że bez tego ostatniego -printotrzymuję dodatkowe przedmioty (które nie mają z tym nic wspólnego -name 'netcdf'); to -printzapewnia, że tylko mecze nazw są drukowane (jeśli występują).