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.