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

2

Eu quero encontrar todos os arquivos em dir1 com os mesmos nomes de arquivo correspondentes em dir2 e substituí-los pelos arquivos de dir2 .

Por exemplo:

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

Por isso, quero remover do dir1 o antigo arquivo first.txt e substituí-lo por first.txt de dir2 .

Como conseguir isso usando o terminal Bash?

    
por michael 03.11.2015 / 10:12

2 respostas

2

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

rsync -av --existing dir2/ dir1/

Isto recursivamente copiará os arquivos do dir2 para o diretório1 somente se o arquivo já existir no diretório1.

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

A opção --existing informa rsync para pular a criação de novos arquivos no receptor.

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

rsync também pode ser usado na rede, semelhante a scp .

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

    
por 03.11.2015 / 11:42
1

O rsync pode fazer isso com a opção --existing :

rsync -v --existing dir2/* dir1/

    
por 03.11.2015 / 11:43