É tão estranho que às vezes o seguinte padrão de -name em find poderia pesquisar inesperadamente todos os nomes de arquivos correspondentes com sucesso. Por direitos, ele só poderia pesquisar um nome de arquivo correspondente no diretório atual por meio da análise do shell (não encontrar utilitário sem aspas).
find /tmp -type f -name *.txt
/tmp/amp_iostat.txt
/tmp/awrrpt_1_7950_7973.txt
/tmp/oplanlog/osys/2014-07-01-12-26-28/log.txt
/tmp/oplanlog/osys/2014-07-01-13-15-33/log.txt
/tmp/oplanlog/osys/2014-07-01-13-17-58/log.txt
/tmp/oplanlog/osys/2014-07-01-13-30-27/log.txt
/tmp/oplanlog/osys/2016-10-27-19-38-50/log.txt
/tmp/pms2_20170427.txt
/tmp/pmsdb1_20170622.txt
/tmp/pmssh1_20160728.txt
/tmp/pmssh1_20160831.txt
/tmp/pmssh1_20161227.txt
/tmp/pmssh1_20170328.txt
/tmp/pmssh1_20170523.txt
/tmp/pmssh1_20170727.txt
/tmp/pmssh1_20170822.txt
/tmp/pmssh2_20170328.txt
/tmp/pmssh_20170119.txt
/tmp/pmssh_20170220.txt
/tmp/sgpms_20140717_1736_summary.txt
/tmp/sgpms_20140717_1736_trace.txt
/tmp/sgpms_20140717_1737_summary.txt
/tmp/sgpms_20140717_1737_trace.txt
/tmp/sgpms_20140717_1739_summary.txt
/tmp/sgpms_20140717_1739_trace.txt
/tmp/sgpms_20140717_1743_summary.txt
/tmp/sgpms_20140717_1743_trace.txt
/tmp/sgpms_20140717_1749_summary.txt
/tmp/sgpms_20140717_1749_trace.txt
/tmp/sgpms_20140717_1751_summary.txt
/tmp/sgpms_20140717_1751_trace.txt
find /tmp -type f -name *.txt|wc -l
31
Sem aspas
*.txt
, está sujeito à expansão do nome do caminho (também conhecida como expansão do nome do arquivo) . Isso acontece no diretório de trabalho atual (CWD). Se o CWD contiver algum arquivo com extensão 'txt', antes de chamarfind
o shell, substitua o*.txt
parâmetro pelos nomes de arquivo correspondentes e seu comando se tornará algo como isto:Existem pelo menos três resultados que você pode obter, dependendo se a expansão retorna...
find
: o-name
teste corresponderá apenas a esse arquivo-name
não corresponderá a nadaPor outro lado, se o CWD não contiver nenhum arquivo txt, ele
*.txt
será passado parafind
e se comportará exatamente como se você o citasse.Moral: ao usar
find
sempre coloque aspas em padrões que contenham globs, a menos que você realmente queira que a expansão do nome do caminho ocorra (raramente você veria isso feito intencionalmente para a-name
opção).