Gostaria apenas de salientar esta resposta do @Gilles em Excluir caminhos que fazem com que a reclamação seja encontrada sobre permissões - Unix e Linux Stack Exchange ; basicamente envolve uma construção para findque não desça diretórios ilegíveis e, nesse sentido, provavelmente também é um pouco mais rápido.
Isso parece funcionar para mim:
Com o GNU findou qualquer outro findque suporte os predicados -readablee -executable:
find / -type d ! \( -readable -executable \) -prune -o -type f -name netcdf -print
ou também isso:
find / -type d ! -perm -g+r,u+r,o+r -prune -o -type f -name 'netcdf' -print
Por algum motivo, preciso adicionar todo o g+r,u+r,o+r(atalho para isso éa+r ), caso contrário, se um deles for deixado de fora, ainda posso receber ocorrências "Permissão negada".
Aqui está um detalhamento de como eu vejo isso (observe que o -aoperador (e) findestá implícito entre dois 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
Note que, sem o último -print, recebo alguns itens extras mostrados (que não têm nada a ver com -name 'netcdf'); os -printgarante que apenas o nome corresponde são impressos (se qualquer).