Por padrão, os shells expandem os curingas se um arquivo corresponder a eles, mas não serão expandidos sem correspondência. Por exemplo, se você executar touch /tmp/111; touch /tmp/11*
, isso criará e atualizará o mtime em / tmp / 111, mas se / tmp estiver vazio, mas você chamar touch /tmp/11*
, receberá o arquivo "11 *" em /tmp.
Esta é uma característica bastante estranha das shells. Às vezes, a expansão adequada não é possível sem hacks especiais como função intermediária. A maioria dos invólucros atuais inventam opções especiais para casos típicos; por exemplo. O "shopt -s failglob" no bash rejeita a execução de qualquer comando no qual a correspondência de caractere curinga falhe.
Deve-se confiar na expansão do caractere curinga de find, de modo que tal padrão deve ser citado contra a expansão no shell:
find /home/primbat/testing -name 'sftp_bcs_report_*.log' -type f -ctime +7
(nota aspas simples). Com zero ou um arquivo, funciona, mas com dois ou mais arquivos você tem a sintaxe de comando quebrada e reclama - isso é o que é dito pelo colega Arcege . Seu "set -f" desabilita a expansão totalmente - bem, é uma boa medida para diagnósticos, mas pode dar ancinhos subaquáticos para um futuro em movimento. As cotações são mais simples:)