Provavelmente você está usando um desses shells como bash
e a maioria dos outros POSIX shells que não reportam um erro quando globs não combinam com nenhum arquivo e passam o glob textual (unexpanded) para o aplicativo (e não há arquivos não ocultos com uma extensão .log
no diretório atual).
Nestas conchas, você descobrirá que
echo *.log
saídas
*.log
em vez de um erro como:
zsh: no matches found: *.log'
fish: No matches for wildcard '*.log'. See 'help expand'.
echo *.log
echo: No match.
Então, se não houver nenhum arquivo .log
no diretório atual:
find . -name *.log
Seria o mesmo que
find . -name '*.log'
onde um argumento litteral *.log
é passado para find
.
Os shells em que isso foi corrigido são zsh
, csh
, tcsh
e versões recentes de fish
(bem, na verdade, foi OK em versões anteriores do Unix, mas foi quebrado no shell Bourne em o final dos anos 70 e depois fixou novamente em algumas conchas). Com bash
, você pode usar shopt -s failglob
para obter o melhor comportamento.
Observe que, se houvesse um arquivo .log
no diretório atual (como file.log
, ele se tornaria:
find . -name file.log
E se houvesse mais de um (como file1.log
e file2.log
), isso se tornaria:
find . -name file1.log file2.log
Qual seria uma invocação find
inválida.