Copie arquivos com nomes diferentes de diretórios diferentes

0

Estou tentando copiar vários arquivos com nomes diferentes de diretórios diferentes para um mesmo novo diretório. Os nomes dos diretórios são os mesmos que o início de cada nome de arquivo. Por exemplo, do diretório /mnt/data/files/xyz , eu quero copiar o arquivo xyz_5 para o diretório /mnt/data/myname/new . No diretório /mnt/data/files/abc , desejo copiar o arquivo abc_7 no diretório /mnt/data/myname/new .

Eu tenho 60 arquivos para os quais preciso fazer isso. O que eu faço agora:

cd /mnt/data/files/xyz;
cp -v *_5 /mnt/data/myname/new

Eu faço isso para cada arquivo. Mas posso fazer isso com um único pedaço de código?

    
por SSK 03.09.2015 / 13:48

2 respostas

1

A pergunta não é muito clara, mas provavelmente você só quer fazer

cp -v /mnt/data/files/xyz/*_5 /mnt/data/files/abc/*_7 /mnt/data/myname/new/
    
por 03.09.2015 / 13:56
1

Um loop for simples pode fazer o trabalho:

for i in /mnt/data/files/*; do
  [ -d "$i" ] && cp -v "${i}/${i}_5" /mnt/data/myname/new/
done

O loop for é executado através do conteúdo do diretório /mnt/data/files/ . Dentro do loop [ -d "$i" ] verifica se o item é um diretório. Se sim, copie o arquivo nesse diretório com o mesmo nome que o diretório e terminando com _5 no diretório de destino /mnt/data/myname/new/ .

    
por 03.09.2015 / 14:04