Comportamiento extraño `comodín` - ¿por qué?

9

locate "*.png"devuelve todos los archivos que terminan en .png, como se esperaba.

locate "test.*"no devuelve nada, pero hay archivos nombrados testen mi sistema.

locate "*test"devuelve todos los archivos que terminan en test, como se esperaba.

locate "test*"no devuelve nada, pero hay archivos que comienzan testen mi sistema.

¿Por qué los comodines parecen funcionar solo para "terminar con"?

Vittorio Romeo
fuente
1
¿Reconstruyó el ubicaciónb después de crear los archivos que coinciden test*y test.*?
Ignacio Vazquez-Abrams
@ IgnacioVazquez-Abrams: sí
Vittorio Romeo

Respuestas:

12

locate "test.*" no devuelve nada, pero hay archivos llamados prueba en mi sistema.

.se trata como un punto, no como en expresiones regulares como un carácter arbitrario, por lo test.*que no coincide test, pero test.foo.

locate "test*"no devuelve nada, pero hay archivos que comienzan testen mi sistema.

localizar almacena la ruta completa al archivo , por lo que para buscar archivos que comiencen con la prueba, debe usar locate "*/test*".

El último punto puede ser confuso, ya que locate fooencuentra algo incluido foo, por lo que el patrón se interpreta como *foo*. Parece que el patrón no está encerrado en estrellas, si ya hay un comodín en el patrón.

Descargo de responsabilidad : hice algunas pruebas y estas son mis conclusiones, no puedo probarlas citando la página de manual, que parece muy rudimentaria.

mpy
fuente
3
En mi man locatetengo: Si no se especifica --regex, los PATRONES pueden contener caracteres globales. Si algún PATRÓN no contiene caracteres globales, localizar se comporta como si el patrón fuera * PATRÓN *.
gniourf_gniourf