miércoles, 6 de julio de 2016

Encontrando nombres de archivos feos con find

El comando find soporta un test basado en un expresión regular. Hay una consideración importante a tener en cuenta cuando usamos expresiones regulares con find en lugar de grep. Mientras que grep imprimirá una linea cuando la línea contiene una cadena que coincide con una expresión, find requiere que la ruta coincida exactamente con la expresión regular. En el siguiente ejemplo, usaremos find con una expresión regular para encontrar cada ruta que contenga cualquier carácter que no sea miembro de la siguiente lista:

[-_./0-9a-zA-Z]

Un escaneo como este revelará rutas que contengan espacios y otros potenciales caracteres ofensivos:

[me@linuxbox ~]$ find . -regex '.*[^-_./0-9a-zA-Z].*'

Debido al requerimiento de que coincida exactamente la ruta completa, usamos .* en ambos extremos de la expresión para buscar cero o más instancias de cada carácter. En el centro de la expresión, usamos una expresión entre corchetes negada conteniendo nuestra colección de caracteres de ruta aceptables.

No hay comentarios:

Publicar un comentario