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 find
que 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 find
ou qualquer outro find
que suporte os predicados -readable
e -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 -a
operador (e) find
está 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 -print
garante que apenas o nome corresponde são impressos (se qualquer).