Esteja ciente de que você está usando o termo "expressão regular" com bastante liberdade. O que você está lidando na opção find -name é bastante próximo em relação a um shell glob ... Por outro lado, a opção find -regex usa uma pesquisa de expressão regular. Você pode escolher qual estilo de regex usar através da opção -regextyp. A escolha dos tipos implementados atualmente é: emacs (este é o padrão), posix-awk, posix-basic, posix-egrep e posix-extended. ...
Como você lida com a barra invertida e o asterisco, etc. pode variar dependendo do que você deseja fazer. Se você quiser que find -name considere um asterisco como um caractere curinga, será necessário garantir que ele NÃO escape quando find realmente lê o padrão na linha de comando.
Para garantir que encontrar a obtenha em uma forma sem escape, você deve evitar que o shell (normalmente bash ) seja executado * (muito poderoso) expansão de shell no seu asterisco ... Para proteger você DEVE escapar dele no nível da linha de comando (ex .: "escape" "nos olhos da casca) .. O conceito chave neste momento é " proteger " ...
Você pode proteger seu asterisco do shell de três maneiras:
- use
'aspas simples' - use
"aspas duplas" - use as barras invertidas
\(e não )
Portanto, para find ver seu asterisco como um caractere curinga, qualquer um dos métodos de "proteção" a seguir funcionará.
-
find -name up'*' -
find -name up"*" -
find -name up\* -
find -name 'up*' -
find -name "up*" -
find -name "up"\*
Observe que o shell nunca executa a expansão de nada em ' aspas simples ' ... " aspas duplas " são uma história diferente ..