A primeira citação dupla deve funcionar:
$ touch asdfghjkl
$ var=fgh
$ find -name "*$var*"
./asdfghjkl
Dentro de aspas simples ( '*$var*'
), a variável não é expandida e nem é expandida quando o sinal de dólar é escapado entre aspas duplas ( "*\$var*"
). Se você escapa duas vezes o sinal de cifrão ( "*\$var*"
), a variável é expandida, mas find
também recebe uma barra invertida literal. (Mas find
parece tomar a barra invertida como uma fuga novamente, por isso não muda o significado.)
Então, por mais confuso que seja, isso também funciona:
$ set -x
$ find -name "*\$var*"
+ find -name '*\fgh*'
./asdfghjkl
Você pode tentar executar todos os outros com set -x
habilitado para ver quais argumentos find
realmente obtém.
Como de costume, coloque o nome da variável entre chaves {}
, se for seguido por letras, dígitos ou sublinhados, por exemplo "*${prefix}somename*"
.