Mover arquivos específicos para dois locais diferentes [closed]

3

Estou tendo uma consulta sobre a separação de arquivos no unix. Suponha que em um diretório unix existam vários arquivos com nomes diferentes, mas com a mesma extensão. Por exemplo,

/dir/AB_123yuu.pdf
/dir/SD_234ggj.pdf
/dir/AB_123jlhj.pdf
/dir/DE_373hhj.pdf
etc...

Agora, o requisito é copiar todos os arquivos que começam com o nome AB_123 para server1 e copiar os arquivos restantes para server2 ao mesmo tempo.

    
por Sanjay 31.12.2017 / 20:22

3 respostas

1

Se você estiver usando bash use o mecanismo glob estendido:

shopt -s extglob
cp ABC_123* /server1/
cp !(ABC_123*) /server2/

O !(pattern) corresponderá a tudo exceto ao padrão fornecido.

Em zsh coisas semelhantes seriam

setopt extendedglob
cp AB_123* /server1/
cp *~AB_123* /server2/

ou ainda mais simples

cp ^AB_123* /server2/
    
por 31.12.2017 / 23:38
1

Use a opção extglob e rsync

shopt -s extglob
rsync -a AB_123*    server1:/home/foo/files &
rsync -a !(AB_123*) server2:/home/foo/files &

Veja esta pergunta para mais informações,

por 31.12.2017 / 23:51
0

Crie duas matrizes

AR1: para arquivos com correspondência regex AB_123 * .pdf

AR2: Para arquivos com extensão * .pdf e sem prefixo AB_123

Preencha com dois comandos find e copie os arquivos para o servidor remoto com scp

AR1=()

AR2=()

for file in $(find /path -name AB_123*.pdf); do AR1+=($file); done

for file in $(find . -name *.pdf | grep -v /AB_123); do AR2+=($file); done

scp ${AR1[*]} username@server1:/remote/path

scp ${AR2[*]} username@server2:/remote/path

Este é um exemplo

    
por 31.12.2017 / 20:39