Não use um alias
para passar argumentos. Eles não são portáteis e úteis apenas em shells interativos. Use uma função e passe os argumentos como caminhos necessários
regexFind() {
(( "$#" )) || { printf 'Insufficient arguments provided \n' >&2; return 1; }
find "$1" -regextype egrep -iregex ".*\.(sh|md)$"
}
e chame a função como
regexFind "/home/foo/bar"
Além disso, para adicionar às suas descobertas, observe que bash
também possui uma maneira intrínseca de globar arquivos. Você só precisa ativar algumas opções de shell estendidas para fazê-lo funcionar. O -s
ativa a opção e -u
a desativa.
O nullglob
permite ignorar os resultados do glob não-expandidos como correspondências válidas. Portanto, supondo que você queira corresponder arquivos que terminam com *.sh
e *.md
, você só precisa navegar para esse diretório específico e fazer
shopt -s nullglob
fileList=(*.sh)
fileList+=(*.md)
shopt -u nullglob
e imprima os resultados para ver abaixo. Lembre-se de citar a expansão para evitar que os nomes dos arquivos passem por divisão de palavras.
printf '%s\n' "${fileList[@]}"