'find' não exibe todos os arquivos ao usar curingas

3

Em exibição:

$find . -name *.exe

dá:

./MakeItSo_1.2.2/MakeItSo_1.2.2/MakeItSo.exe
./MakeItSo.exe

mas esses não são os únicos arquivos exe no diretório. Por exemplo, executando

$find . -name ATLTester.exe

dá:

./Debug/ATLDmoVexaTester.exe
    
por dafnahaktana 09.06.2017 / 22:03

1 resposta

7

É por causa do shell globbing . Experimente:

find . -name "*.exe"

Quando não é cotado, *.exe se expande para todos os arquivos *.exe no diretório atual, a menos que não haja nenhum. Acontece que você tem apenas um desses arquivos, então seu comando original era de fato:

find . -name MakeItSo.exe

Se você não tivesse arquivos *.exe no diretório atual, a globalização do shell não ocorreria, find obteria o argumento *.exe literalmente e seu comando funcionaria conforme o esperado. Por outro lado, se você tivesse mais de um arquivo com essa extensão, todos eles seriam fornecidos como argumentos para find e isso levaria a um erro de sintaxe.

    
por 09.06.2017 / 22:04