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.