Para expandir um pouco mais na resposta acima, no Linux, os curingas são expandidos pelo shell, o que significa que o shell chamará o comando com uma lista de nomes de arquivos correspondentes como argumentos. E o shell procura apenas no diretório atual arquivos correspondentes (ou em qualquer diretório que você especificar antes do caractere curinga). Por exemplo, um comando como:
ls *.zip
será traduzido em:
ls file1.zip file2.zip file3.zip
E, se não houver arquivos .zip
no diretório atual, o nome do arquivo literal *.zip
será passado para o comando, caso em que não é possível definir um arquivo chamado *.zip
. (Um *
é um caractere legal em um nome de arquivo Unix / Linux, btw). Agora, se você não quiser que o shell expanda os caracteres curinga, mas, em vez disso, se quiser que o caractere curinga seja passado diretamente para o comando que você está chamando, será necessário incluí-lo entre aspas. Isto tem um efeito interessante, em que um comando como:
find . -name *.zip
fornecerá os resultados esperados se você não tiver arquivos .zip
em seu diretório atual (o comando find verá *.zip
). Mas se você tiver um ou mais arquivos .zip
no diretório atual, o que é executado é:
find . -name file1.zip file2.zip
que não encontrará nenhuma correspondência em nenhum subdiretório (a menos que eles sejam denominados exatamente file1.zip
ou file2.zip
, etc). Assim, a moral da história é, ao usar o find, certifique-se de usar aspas em torno de qualquer nome de arquivo com curingas.