是否可以将补丁应用到不同的文件名但具有相同的结构。情况是,我有一个具有特定名称的文件的补丁,然后由于某种不可避免的原因,该文件被更改并复制到多个文件中,但我必须将补丁应用到所有这些文件,除此之外,我不允许先将那么多文件重命名为原来的名称。
例子如下:(这只是一个例子,实际情况有点不同)
服务器电脑
- 原始文件
main.cpp
- 复制并复制到
main_cli.cpp
、main_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
修补方式。bar2
bar