Como copiar um subconjunto de arquivos de uma determinada pasta

Como copiar um subconjunto de arquivos de uma determinada pasta

Eu tenho a seguinte estrutura de diretórios.

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

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

Responder1

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

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

O -type f diz ao find para levar em consideração apenas os arquivos regulares, o -exec diz: execute o seguinte comando em cada arquivo. O \; no final encerra o comando a ser executado. O {} é um espaço reservado que é substituído pelo nome do arquivo real em find. Confira a página de manual find para obter detalhes e outros exemplos de uso.

Aqui está 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“

informação relacionada