Obtendo globbing para trabalhar com 'locate'?

3

Estou no Ubuntu 11.04, onde tenho:

$ locate --version
mlocate 0.23.1 [...]

A página man locate diz:

If --regex is not specified, PATTERNs can contain globbing characters. If any PATTERN contains no globbing characters, locate behaves as if the pattern were *PATTERN*.

OK, para fazer um pequeno teste: primeiro, apenas procurar por 'lua' funciona - mas retorna uma tonelada (500+) de resultados:

$ locate 'lua' | head -5
/boot/grub/hwmatch.lua
/etc/alternatives/lua-compiler
/etc/alternatives/lua-compiler-manual
/etc/alternatives/lua-interpreter
/etc/alternatives/lua-manual

$ locate 'lua' | wc -l
560

Eu quero pesquisar por .so arquivos com lua no nome do arquivo, então eu tento isso como uma tentativa de usar um padrão de globbing:

$ locate 'lua*so*'

Nada, 0 resultados. Então estou tentando com um regex:

$ locate --regex 'lua.*so.*' | head -5
/usr/lib/libipelua.so.7.0.10
/usr/lib/liblua5.1.so
/usr/lib/liblua5.1.so.0
/usr/lib/liblua5.1.so.0.0.0
/usr/lib/gtk-2.0/2.10.0/engines/libluaengine.so

Bem, isso funciona - então é bom o suficiente.

Mas o que me intriga é isso - se a página man diz que o globbing é suportado quando não estiver usando o regex, como devo formatar meu padrão glob para que ele funcione?

    
por sdaau 24.01.2015 / 06:37

1 resposta

4

Seu glob só será compatível se o nome começar com lua . Experimente este glob:

locate '*lua*so*'
    
por 24.01.2015 / 07:08