Como copiar um subconjunto de arquivos de uma determinada pasta

0

Eu tenho a seguinte estrutura de diretórios.

dirA / [fileA, someB, barC, fileD, someE, barF] dirB / [fileA, barC, someE]

Eu quero copiar apenas os arquivos de dirA para dirB que já estão presentes em dirB. Como faço essa cópia seletiva?

    
por Rpj 27.03.2013 / 09:34

1 resposta

2

Você poderia, por exemplo, usar o comando find com a opção -exec. Você provavelmente usaria alguma sintaxe como a seguinte (deve ser executada em dirB e estar ciente de que é recursiva):

find ./ -type f -exec cp '../dirA/{}' ./ \;

O -tipo f diz ao achado para considerar apenas os arquivos regulares, diz o -exec: execute o seguinte comando em cada arquivo. O \; no final termina o comando a ser executado. O {} é um espaço reservado que é substituído pelo nome do arquivo real por find. Confira a man page do find para detalhes e outros exemplos de uso.

Veja o que acontece no meu PC:

desktop:~$ mkdir dirA
desktop:~$ mkdir dirB
desktop:~$ cd dirA
desktop:~/dirA$ touch foo bar this
desktop:~/dirA$ cd ..
desktop:~$ cd dirB
desktop:~/dirB$ touch bar this
desktop:~/dirB$ find ./ -type f -exec cp -v '../dirA/{}' ./ \;

»../dirA/./this“ -> »./this“
»../dirA/./bar“ -> »./bar“
    
por soulsource 27.03.2013 / 09:47