Diff

將更新檔應用於多個不同的名稱

  • April 7, 2018

是否可以將更新檔應用於不同的文件名但具有相同的結構。情況是,我有一個具有特定名稱的文件的更新檔,然後由於某種不可避免的原因,該文件被更改並複製到多個文件中,但我必須將更新檔應用於所有這些文件,除此之外我不允許首先將那麼多文件重命名為原始名稱。

這是一個例子:(這只是一個例子,實際情況有點不同)

伺服器-PC

  • 原始文件main.cpp
  • 複製並複製到main_cli.cpp, main_tmp.cpp, 和一些main_*.cpp

本地電腦

  • 原始文件main.cpp
  • 被修改了
  • 創建更新檔(使用diff -u
  • 獲取更新檔文件main.patch

所以我必須main.patch從local-pc申請到main_*.cppserver-pc中的所有文件。

謝謝你。

您可以指定將更新檔應用於特定文件:

patch -i main.patch main_cli.cpp

然後,循環遍歷所有文件就很簡單了:

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

例子:

$ 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

注意即使更新檔文件指定瞭如何patch -i patch1 bar2修補。bar2``bar

引用自:https://unix.stackexchange.com/questions/436123