Я просто хотів би зазначити цю відповідь на @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
гарантує , що друкуються тільки ім'я сірники (якщо такі є).