Я просто хотів би зазначити цю відповідь на @Gilles у маршрутах Виключення, які змушують скаржитися на дозволи - Unix & Linux Stack Exchange ; він в основному включає конструкцію, findяка змушує його не спускати нечитабельних каталогів, і в цьому сенсі, ймовірно, також трохи швидше.
Здається, це працює для мене:
З GNU findабо будь-яким іншим, findщо підтримує -readableі -executableпредикати:
find / -type d ! \( -readable -executable \) -prune -o -type f -name netcdf -print
або також це:
find / -type d ! -perm -g+r,u+r,o+r -prune -o -type f -name 'netcdf' -print
Чомусь мені потрібно додати всі g+r,u+r,o+r (ярлик для цього є a+r), інакше, якщо один із них не залишиться, я все одно можу отримати звернення "Відмовлено в дозволі".
Ось розбивка того, як я бачу це (зверніть увагу, що -aоператор (і) findміститься між двома предикатами ):
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
Зауважте, що без останнього -printя отримую кілька додаткових елементів (які не мають нічого спільного -name 'netcdf'); що -printгарантує , що друкуються тільки ім'я сірники (якщо такі є).