Redirecionamento IO
O problema não está no seu script, mas é um recurso do redirecionamento do UNIX IO.
Considere o seguinte comando
find data/ -size +10G | grep -v 'find:'
apenas o fluxo stdout está sendo enviado para o comando canalizado grep , as mensagens de erro estão em um fluxo de saída separado, stderr .
Portanto, mesmo que você esteja vendo as mensagens de erro em sua sessão de terminal, devido ao fato de o terminal estar imprimindo stdout e stderr no console, seu comando grep não é recebendo essas linhas de saída. Isso ocorre devido a como o | redireciona a saída. O canal | conecta apenas stdout aostdin do próximo comando, então o stderr não entra no próximo comando.
A maioria dos utilitários *NIX funciona dessa maneira, enviando erros para o fluxo de saída stderr para que, em situações como as que você encontra, não haja necessidade de filtrar essas mensagens.
Teste
Para ver qual será o stdout exato do comando acima quando ele for passado para grep , faça o seguinte:
find data/ -size +10G > out.txt
Você ainda deve ver os erros no seu console, mas o fluxo de saída stdout terá ido para um novo arquivo, out.txt . Olhe lá e você não verá as linhas de mensagens de erro.