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"?


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.


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.