Os shells têm caracteres curinga que diferem das sintaxes usuais de expressão regular: ? para corresponder a qualquer caractere único, * para corresponder a qualquer número de caracteres e [abc] para corresponder a qualquer caractere único entre a , b ou c . O comando a seguir mostra todos os arquivos cujo nome corresponde à expressão regular estendida¹ ((R|r)eading(T|t)est(D|d)ata) no diretório atual:
echo *[Rr]eading[Tt]est[Dd]ata*
Se você quiser encontrar arquivos em subdiretórios, execute primeiro shopt -s globstar (você pode colocar este comando em ~/.bashrc ). Isso ativa o padrão ** para corresponder a qualquer nível de subdiretórios:
echo **/*[Rr]eading[Tt]est[Dd]ata*
Os caracteres curinga da shell não são tão poderosos quanto as expressões regulares. Por exemplo, não há ou ( | ) operador. Você pode obter o poder das expressões regulares, mas com uma sintaxe diferente por motivos históricos. Adicione shopt -s exgblob ao seu .bashrc , então você pode usar @(foo|bar) para corresponder a foo ou bar (como foo|bar em um ERE), *(pattern) para corresponder a uma sequência qualquer número de ocorrências de pattern (como (pattern)* em um ERE), +(pattern) para corresponder a uma ou mais ocorrências, ?(pattern) para corresponder a zero ou uma ocorrência e !(pattern) para corresponder a qualquer coisa, exceto pattern (sem equivalente ERE). p>
¹ “Expressão regular estendida” (ERE abreviado) é o nome do unix da sintaxe de regex que o JavaScript usa.