Quero encontrar todos os arquivos dir1
com os mesmos nomes de arquivo correspondentes dir2
e substituí-los pelos arquivos de dir2
.
Por exemplo:
dir1: first.txt second.txt
dir2: third.txt first.txt
Então, quero remover do arquivo dir1
antigo first.txt
e substituí-lo por first.txt
from 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 -av
opções são as opções que você normalmente usará para copiar arquivos usando o rsync.
A --existing
opção diz 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 e tem um significado para rsync.
rsync
também pode ser usado pela rede semelhante ao scp
.
rsync
pode lidar com muitos outros tipos de tarefas de sincronização, atualização e backup de arquivos.
Responder2
rsync pode fazer isso com a --existing
opção:
rsync -v --existing dir2/* dir1/