Aplique o patch a vários nomes diferentes

0

É possível aplicar o patch a um nome de arquivo diferente, mas com a mesma estrutura. O caso era, eu tenho um patch de um arquivo com nome específico e, em seguida, por algum motivo inevitável que o arquivo foi alterado e duplicado em vários arquivos, mas eu tenho que aplicar o patch para todos os arquivos, além disso eu não tenho permissão para renomeie muitos arquivos para o nome original primeiro.

Veja o exemplo: (é apenas um exemplo, caso real um pouco diferente)

server-pc

  • arquivo original main.cpp
  • copiado e duplicado em main_cli.cpp , main_tmp.cpp e alguns main_*.cpp

local-pc

  • arquivo original main.cpp
  • foi modificado
  • crie um patch (usando diff -u )
  • obtenha um arquivo de patch main.patch

Então eu tenho que aplicar main.patch do pc local para todos os arquivos main_*.cpp no servidor pc.

Obrigado.

    
por nanangarsyad 07.04.2018 / 06:20

1 resposta

1

Você pode especificar que o patch deve ser aplicado a um arquivo específico:

patch -i main.patch main_cli.cpp

Então, é simples o suficiente para fazer o loop de todos os arquivos:

for f in main_*.cpp; do patch -i main.patch "$f"; done

Exemplo:

$ diff -u bar foo > patch1
$ cp bar bar2
$ patch < patch1
patching file bar
$ patch -i patch1 bar2
patching file bar2
$ diff -s foo bar2
Files foo and bar2 are identical

Observe como patch -i patch1 bar2 corrigiu bar2 , mesmo que o arquivo de correção tenha especificado bar .

    
por 07.04.2018 / 06:41

Tags