Você pode simplesmente descartar esses erros e ignorar o status de saída:
find /tmp -name dsm\* -type f 2> /dev/null || :
Se você ainda quiser manter o stderr de find
, para ainda poder ver outros erros além da falha em inserir ou listar diretórios devido à restrição de permissão de acesso, tente usar uma sintaxe que detecte esses problemas de permissão, mas isso vai ser complicado.
Os diretórios aos quais você não tem acesso dependem da permissão e propriedade (usuário e grupo). Você precisaria de algo como:
export "PATH=$(getconf PATH):$PATH"
u=$(id -u) g=$(id -G | sed 's/ / -o -group /g'); IFS=" "
find /tmp -type d ! \( \
-user "$u" -perm -u=rx -o \
! -user "$u" \( -group $g \) -perm -g=rx -o \
! -user "$u" ! \( -group $g \) -perm -o=rx \
\) -prune -o -type f -name dsm\* -print
Dito isto, nos meus testes, no Solaris 11, find
ainda vai reclamar sobre diretórios que ele não pode ler mesmo que você os tenha apagado, e no Solaris 10, eu não consigo nem fazer isso qualquer ação, quanto mais -prune
neles.
Portanto, o Solaris find
parece estar além da esperança nessa frente. Você pode usar o perl
' File::Find
module.
Observe também que a abordagem acima leva em consideração apenas as permissões simples do Unix, não as ACLs ou outras restrições de segurança.