<Anterior | Conteúdo | Próxima>
Encontrar nomes de arquivo feios com find
O find comando suporta um teste baseado em uma expressão regular. Há uma consideração importante a ter em mente ao usar expressões regulares em find contra grep. Enquanto que grep irá imprimir uma linha quando a linha contém uma string que corresponde a uma expressão, find requer que o nome do caminho coincidir exatamente a expressão regular. No exemplo a seguir, vamos usar find com uma expressão regular para encontrar cada nome de caminho que contenha qualquer caractere que não seja membro do seguinte conjunto:
[-_./0-9a-zA-Z]
Tal varredura revelaria nomes de caminhos que contêm espaços incorporados e outros caracteres potencialmente ofensivos:
[me @ linuxbox ~] $ achar . -regex '. * [^ -_. / 0-9a-zA-Z]. *'
[me @ linuxbox ~] $ achar . -regex '. * [^ -_. / 0-9a-zA-Z]. *'
Devido à necessidade de uma correspondência exata de todo o nome do caminho, usamos .* em ambas as extremidades da expressão para corresponder a zero ou mais instâncias de qualquer caractere. No meio da expressão, usamos uma expressão de colchetes negado contendo nosso conjunto de caracteres de nome de caminho aceitáveis.