Encontre e substitua todos os mesmos arquivos entre 2 diretórios

Encontre e substitua todos os mesmos arquivos entre 2 diretórios

Quero encontrar todos os arquivos dir1com os mesmos nomes de arquivo correspondentes dir2e substituí-los pelos arquivos de dir2.

Por exemplo:

dir1: first.txt second.txt
dir2: third.txt first.txt

Então, quero remover do arquivo dir1antigo first.txte substituí-lo por first.txtfrom dir2.

Como conseguir isso usando o terminal Bash?

Responder1

Na verdade, existe um único comando que faz exatamente o que você está pedindo.

rsync -av --existing dir2/ dir1/

Isso copiará recursivamente os arquivos do dir2 para o dir1 somente se o arquivo já existir no dir1.

As -avopções são as opções que você normalmente usará para copiar arquivos usando o rsync.

A --existingopção diz rsyncpara pular a criação de novos arquivos no receptor.

Você deve ter a barra final em dir2/ na linha de comando porque rsyncse comporta de maneira diferente da maioria dos comandos na barra e tem um significado para rsync.

rsynctambém pode ser usado pela rede semelhante ao scp.

rsyncpode lidar com muitos outros tipos de tarefas de sincronização, atualização e backup de arquivos.

Responder2

rsync pode fazer isso com a --existingopção:

rsync -v --existing dir2/* dir1/

informação relacionada