'localizar' comportamento estranho do caractere curinga - por quê?

9

locate "*.png" retorna todos os arquivos que terminam com .png , como esperado.

locate "test.*" não retorna nada, mas existem arquivos com o nome test no meu sistema.

locate "*test" retorna todos os arquivos que terminam com test , como esperado.

locate "test*" não retorna nada, mas há arquivos começando com test no meu sistema.

Por que os curingas parecem funcionar apenas para "terminar com"?

    
por Vittorio Romeo 29.06.2013 / 12:31

1 resposta

10

locate "test.*" doesn't return anything, but there are files named test in my system.

. é tratado como ponto, não como no caractere regex como arbitrário, portanto test.* não corresponde a test , mas test.foo .

locate "test*" doesn't return anything, but there are files starting with test in my system.

localize as lojas o caminho completo para o arquivo , para encontrar os arquivos que começam com teste, você deve usar locate "*/test*" .

O último ponto pode ser confuso, pois locate foo encontra qualquer coisa, incluindo foo , então o padrão é interpretado como *foo* . Parece que o padrão não está entre estrelas, se já houver um caractere curinga no padrão.

Disclaimer : Eu fiz alguns testes e estas são minhas conclusões, eu não posso prová-los citando a man page, que parece muito rudimentar.

    
por 29.06.2013 / 12:59