Por que 'find -name * .jks' não está retornando alguns arquivos? [duplicado]

3
find . -name *.jks -print 2>/dev/null

retorna arquivos de extensão jks que não possuem sublinhados como parte de seu nome. Para minha surpresa, acabei de descobrir que * NÃO substitui o sublinhado.

find . -name *_*.jks -print 2>/dev/null

retorna arquivos de extensão jks que possuem um sublinhado .

Como pesquiso arquivos com 0 ou mais sublinhados? Usando o OSX Mountain Lion.

    
por amphibient 17.09.2013 / 16:07

1 resposta

11

todas as versões de find que eu conheço corresponderão a sublinhados com curingas.

esteja avisado quando fizer isso.

find . -name *.jks -print 2>/dev/null

o " *.jks " pode ser expandido pelo shell, antes de executar o comando find.

por exemplo,

$ mkdir foo
$ touch a.jks foo/a.jks foo/b.jks
a.jks
$ find . -name *.jks -print
./a.jks
./foo/a.jks

isso é realmente porque você está realmente chamando find . -name a.jks -print e, portanto, não encontrará, por exemplo, b.jks .

se você citar a expressão curinga, talvez tenha mais sorte:

$ find . -name "*.jks" -print
./a.jks
./foo/a.jks
./foo/b.jks

tenho certeza que correr

$ find . -name "*.jks" -print

fornecerá todos os arquivos com e sem sublinhados.

    
por 17.09.2013 / 16:20