mac find -name *.png não funciona

mac find -name *.png não funciona

Estou tentando pesquisar recursivamente um nome de arquivo que termine em .png. Meu comando find funciona bem para *.js, mas não para *.png.

~ >find dev -name *.png
~ >find dev -name bluerightarrow.png
dev/sandbox/ScheduleEditorTS/ScheduleEditorTS/img/bluerightarrow.png
~ >find dev -name *.js
dev/backup/ScheduleEditorTS/packages/jQuery.2.1.3/Content/Scripts/jquery-2.1.3-vsdoc.js
dev/backup/ScheduleEditorTS/packages/jQuery.2.1.3/Content/Scripts/jquery-2.1.3.js
... etc 

Responder1

Você provavelmente tem um .pngarquivo em seu diretório atual e *é expandido pelo seu shell.

Aqui está uma explicação prática. Crie um diretório chamado test, depois outro chamado subdentro dele e finalmente um arquivo myfile.txtchamado sub. Então cdem test. Aqui estão os comandos para fazer isso:

~ >mkdir -p test/sub
~ >touch test/sub/myfile.txt
~ >cd test

Você pode executar finde obterá os resultados esperados:

~/test >find sub -name *.txt
sub/myfile.txt

Agora crie um arquivo chamado cause.txte testexecute findnovamente:

~/test >touch cause.txt
~/test >find sub -name *.txt

Desta vez, nada foi encontrado porque o shell expande *e seu findcomando se torna:

~/test >find sub -name cause.txt

Não há cause.txtarquivo em sub, portanto não há resultados.

Para evitar esse problema você deve escapar do asterisco com uma barra invertida:

~/test >find sub -name \*.txt
sub/myfile.txt

informação relacionada