[ -f "$myregexp" ] ou [[ -f $myregexp ]] testa se existe um arquivo chamado exatamente $myregexp . (Observe que, com os colchetes únicos, você precisa das aspas duplas.)
Se você quiser testar a existência de arquivos correspondentes a um padrão glob, não há um caminho direto. Você precisa fazer isso em duas etapas: primeiro, gere a lista de correspondências e, em seguida, teste se essa lista está vazia.
a=( ~(Ni)*.@(tgz|tar.gz) )
if [[ ${#a} -ne 0 ]]; then …
Isso usa vários recursos específicos do ksh:
- o prefixo
~(N)para gerar uma lista vazia se não houver correspondência; - o prefixo
~(i)para fazer correspondência insensível a maiúsculas e minúsculas; - a sintaxe
@(foo|bar)glob para corresponder afoooubar
Aqui está um equivalente do bash. No bash, você obtém expansão vazia de maiúsculas para globs não correspondentes e insensibilidade a maiúsculas e minúsculas das opções; extglob é para a sintaxe @(foo|bar) e outras extensões do ksh glob.
shopt -s nocaseglob nullglob extglob
a=( *.@(tgz|tar.gz) )
if [[ ${#a} -ne 0 ]]; then …
Aqui está um equivalente zsh. A opção extended_glob é necessária para o prefixo (#i) para uma correspondência sem distinção entre maiúsculas e minúsculas. O qualificador (N) glob indica expansão vazia para globs não correspondentes.
setopt extended_glob
a=( (#i)*.(tgz|tar.gz)(N) )
if [[ ${#a} -ne 0 ]]; then …