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ę, find
któ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 find
lub dowolnym innym, find
który obsługuje -readable
i -executable
predykaty:
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 -a
operator (i) find
jest 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 -print
otrzymuję dodatkowe przedmioty (które nie mają z tym nic wspólnego -name 'netcdf'
); to -print
zapewnia, że tylko mecze nazw są drukowane (jeśli występują).