Em sistemas semelhantes a Unix, *.sh
é uma expressão glob que é expandida pelo shell e os resultados são passados como argumentos para o programa que está sendo chamado. Se e somente se não houver arquivos correspondentes, a expressão glob será passada como está. Você deve ter o hábito de citar curingas se quiser que eles sejam passados para o programa que você está executando.
Como exemplo, se você executasse find . -path *.sh
de /path/do_not_upload/updates/1.1.1/run_pre_update/
, o comando real que está sendo executado seria find . -path 001.sh 002.sh
, o que quase certamente não é o que você deseja.
Observe que isso é diferente do MS-DOS e dos sistemas relacionados, em que a expansão glob é feita (ou não) pelo programa que está sendo chamado.
Para evitar expansões de shell, inclua o argumento em aspas duplas ou até mesmo simples - que o transmitirá ao programa chamado textualmente e, assim, deixe find
fazer suas próprias expansões:
$ find . -path '*.sh'