É localizar o diretório de saída dependente?

3

Quando estou no meu diretório inicial e digito locate *.cpp , obtenho centenas de resultados.

Usando o mesmo comando em (por exemplo) ~/../forfun/netstream/ , vejo apenas alguns resultados.

Como isso é possível?

    
por bluekuma 22.02.2012 / 15:56

2 respostas

2

Se você executar locate *.cpp no shell, o shell tentará primeiro expandir *.cpp para todos os nomes de arquivos correspondentes a esse padrão e, em seguida, chamar locate com esses nomes de arquivos como argumento.

Portanto, se houver arquivos .cpp em seu diretório atual, locate nunca verá o *.cpp , mas apenas os nomes dos arquivos para os quais ele expande.

Use

locate '*.cpp'

se você não quiser que o shell tente expandir o padrão.

    
por Florian Diesch 22.02.2012 / 16:16
1

locate é um método de localização baseado em banco de dados. É muito rápido, mas não é completo. Sugiro usar find , que é comparativamente muito mais lento, mas pode fazer o que você quer depois:

find /home/forfun/netstream/ -name '*.cpp'

Como alternativa, se você estiver satisfeito com a saída do locate, mas quiser reduzi-lo, poderá sempre passar o canal por grep :

locate '*.cpp' | grep 'forfun/netstream'
    
por Oli 22.02.2012 / 16:18