É fácil esquecer que a globalização de conchas ainda desempenha um papel no processo. Assim, você precisa de uma maneira de informar ao shell para evitar a expansão de * para uma lista de arquivos. Uma maneira é através do que Chris Johnson mencionou - citando.
Outra é através do escape do caractere * , como em
find . -iname \*.js
Compare:
$ strace -e trace=execve find -maxdept 1 -iname *.js > /dev/null
execve("/usr/bin/find", ["find", "-maxdept", "1", "-iname", "file1.js", "file2.js"], [/* 75 vars */]) = 0
find: unknown predicate '-maxdept'
+++ exited with 1 +++
$ strace -e trace=execve find -maxdept 1 -iname \*.js > /dev/null
execve("/usr/bin/find", ["find", "-maxdept", "1", "-iname", "*.js"], [/* 75 vars */]) = 0
find: unknown predicate '-maxdept'
+++ exited with 1 +++
No primeiro caso, vemos que * foi expandido para a lista de arquivos file1.js e file2.js que estão presentes no diretório de trabalho atual. No segundo exemplo - o * é tratado como argumento literal para find . De fato, este é o mesmo resultado produzido citando o argumento:
$ strace -e trace=execve find -maxdept 1 -iname '*.js' > /dev/null
execve("/usr/bin/find", ["find", "-maxdept", "1", "-iname", "*.js"], [/* 75 vars */]) = 0
find: unknown predicate '-maxdept'
+++ exited with 1 +++
Como alternativa, você pode usar o valor octal de * .
$ strace -e trace=execve find -maxdept 1 -iname $''.js > /dev/null
execve("/usr/bin/find", ["find", "-maxdept", "1", "-iname", "*.js"], [/* 75 vars */]) = 0
find: unknown predicate '-maxdept'
+++ exited with 1 +++