O nome do arquivo UNIX geralmente consiste em octetos (bytes de 8 bits), exceto 0x00 (NULL) e 0x2F (/). Todos os outros octetos são válidos. Isso inclui coisas legais como 0x0A (nova linha).
Seu find exemplo tratará nomes de arquivos com caracteres estranhos, como newline, corretamente.
Seu find | grep exemplo dará resultados estranhos e incorretos quando confrontado com uma coisa dessas (verá um arquivo chamado "linha 1 \ nlinha 2" como dois arquivos).
Você pode usar find -print0 | grep -z (se você estiver usando versões GNU, por exemplo, no Linux); Isso preservará a correção. Vai usar um pouco mais de memória. Note que você pode dizer ao find para usar expressões regulares estendidas (por exemplo) usando a opção -regextype .
Se você quiser fazer uma correspondência muito complicada, pode gostar do script find2perl , que converterá uma linha de comando find em um programa perl curto que você pode editar para adicionar na complexidade.