![¿Por qué coincide con el patrón grep '[^a-z0-9\.\/_\-\ +@)(&]' coincide con '-'](https://rvso.com/image/1636258/%C2%BFPor%20qu%C3%A9%20coincide%20con%20el%20patr%C3%B3n%20grep%20'%5B%5Ea-z0-9%5C.%5C%2F_%5C-%5C%20%2B%40)(%26%5D'%20coincide%20con%20'-'.png)
Estoy tratando de encontrar archivos con nombres ridículos. Estoy usando este comando:
find . -type f | egrep -i '[^a-z0-9\.\/_\-\ +@)(&]'
pero estoy un poco estupefacto porque coincide con nombres de archivos que contienen el carácter menos '-'. ¿Por qué? ¿Y cómo solucionarlo?
Editar: Procedimiento para verificar de forma reproducible este comportamiento:
Creé un archivo de prueba llamado testfile, que contiene solo un signo menos.
$ hexdump -C testfile
00000000 2d |-|
egrep -i '[^a-z0-9\.\/_\-\ +@)(&]' testfile
coincide con este signo menos.
Respuesta1
El guión tiene un significado especial en una clase de caracteres, denota una variedad de caracteres.
Coloque el guión al final de la clase de carácter y elimine el escape inútil:
find . -type f | egrep -i '[^a-z0-9./_ +@)(&-]'