É 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 +++