複数の異なる名前にパッチを適用する

複数の異なる名前にパッチを適用する

ファイル名は異なりますが、構造は同じパッチを適用できますか?特定の名前を持つファイルへのパッチがありますが、何らかの理由でファイルが変更されて複数のファイルにコピーされることがあります。まず、多くのファイルの名前を元の名前に変更することはできません。

例は次のとおりです。 (これは単なる例であり、実際の状況は少し異なります。)

サーバーコンピュータ

  • オリジナルファイルmain.cpp
  • main_cli.cppmain_tmp.cppおよび一部にコピーしてコピーmain_*.cpp

ローカルコンピュータ

  • オリジナルファイルmain.cpp
  • 修正されました
  • パッチの作成(使用diff -u
  • パッチファイルの取得main.patch

main.patchしたがって、ローカルPCからmain_*.cppサーバーPC上のすべてのファイルに適用する必要があります。

ありがとうございます。

答え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

関連情報