Os arquivos podem ser selecionados usando dois métodos: os padrões podem ser especificados consecutivamente ou sucessivamente.
Primeiro método
Este método requer o uso de um padrão estendido Bash para especificar vários padrões juntos. O usuário deve ativar a opção extglob shell usando shopt builtin (cf shopt builtin ) porque os padrões estendidos do Bash não estão habilitados por padrão.
prompt% scp username@hostname:"/home/user/dirname/@(foo|bar)*" .
O sub-padrão Bash @(PATTERN-LIST) permite especificar uma lista de um ou mais padrões separados por | . Ele corresponde a um dos padrões fornecidos. Por exemplo, @(foo|bar) corresponde a foo ou bar , mas não corresponde a foobar , barfoo , foofoo , barbar .
A estrela glob corresponde a qualquer sequência de caracteres, incluindo a cadeia vazia. Portanto, o padrão @(foo|bar)* corresponde a todos os nomes de arquivos que começam com foo ou bar (prefixo (sub) string).
Este método funciona quando o shell remoto é Bash e sua opção extglob shell está ativada. O usuário pode ativar essa opção Bash em seu arquivo de configuração (por exemplo, ~/.bash_profile ), na máquina remota.
Segundo método
Este método executa o mesmo comando com argumentos diferentes, várias vezes. Funciona usando um shell compatível com POSIX.
for prefix in foo bar
do
scp username@hostname:"/home/user/dirname/${prefix}*" .
done
Expansão de órtese
Este método não é robusto porque a expressão resultante pode especificar nomes de arquivos que não existem.