Como uso o comando find para reciclar de forma eficaz quando o padrão contém um caractere curinga?

1

Fiquei com a impressão de que o comando a seguir procurará e listará todos os arquivos Java a partir do diretório atual e recursing down.

No entanto, se eu tiver um arquivo Java na raiz do meu diretório inicial, ele listará esse e, em seguida, será interrompido.

O achado deve parar no primeiro jogo, mesmo com um curinga? Eu acho que tenho um equívoco sobre o uso. Obrigado por qualquer esclarecimento.

find . -name *.java
    
por EdgeCase 20.01.2013 / 15:41

1 resposta

1

O padrão curinga *.java é expandido pelo seu shell antes de ser passado para o comando find . Se você tiver um único arquivo foo.java no diretório atual, o shell executará o comando find . -name foo.java . Se você tiver dois arquivos bar.java e foo.java , o comando find . -name bar.java foo.java será executado e find reclamará de um erro de sintaxe. Se não houver nenhum arquivo correspondente no diretório atual, o shell deixará o padrão não expandido, então find . -name *.java é executado como você deseja.

Para dizer ao shell para não expandir o padrão, para que seja sempre passado como é para find , cite:

find . -name '*.java'
find . -name "*.java"
find . -name \*.java
    
por Gilles 20.01.2013 / 15:46