将补丁应用于多个不同的名称

将补丁应用于多个不同的名称

是否可以将补丁应用到不同的文件名但具有相同的结构。情况是,我有一个具有特定名称的文件的补丁,然后由于某种不可避免的原因,该文件被更改并复制到多个文件中,但我必须将补丁应用到所有这些文件,除此之外,我不允许先将那么多文件重命名为原来的名称。

例子如下:(这只是一个例子,实际情况有点不同)

服务器电脑

  • 原始文件main.cpp
  • 复制并复制到main_cli.cppmain_tmp.cpp、 和一些main_*.cpp

本地电脑

  • 原始文件main.cpp
  • 被修改了
  • 创建补丁(使用diff -u
  • 获取补丁文件main.patch

所以我必须main.patch从本地电脑应用到main_*.cpp服务器电脑中的所有文件。

谢谢。

答案1

您可以指定将补丁应用于特定文件:

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修补方式。bar2bar

相关内容