Solo me gustaría señalar esta respuesta de @Gilles en Excluir rutas que hacen que se quejen de los permisos: Unix y Linux Stack Exchange ; Básicamente implica una construcción find
que hace que no descienda directorios ilegibles, y en ese sentido, probablemente también sea un poco más rápido.
Esto parece funcionar para mí:
Con GNU find
o cualquier otro find
que admita los predicados -readable
y -executable
:
find / -type d ! \( -readable -executable \) -prune -o -type f -name netcdf -print
o también esto:
find / -type d ! -perm -g+r,u+r,o+r -prune -o -type f -name 'netcdf' -print
Por alguna razón, necesito agregar todos los g+r,u+r,o+r
(atajos para eso a+r
), de lo contrario, si uno de ellos se deja fuera, aún puedo obtener hits de "Permiso denegado".
Aquí hay un desglose de cómo veo esto (tenga en cuenta que el -a
operador (y) find
está implícito entre dos predicados ):
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
Tenga en cuenta que sin el último -print
, se muestran algunos elementos adicionales (que no tienen nada que ver con -name 'netcdf'
); los -print
asegura que se imprimen sólo coincide el nombre (si lo hay).