2010-12-15 8 views
1

異なるディレクトリに2つのファイルを使用してパッチを適用しようとしています。出力ファイルも別のディレクトリになければなりません。最初のファイルは/var/local/documents/document.xmlで、パッチファイルは/var/local/patches/patch.diffにあり、出力ファイルは/var/localに作成します。 /final/final.xml。ファイルは同じディレクトリに配置されているLinuxの異なるディレクトリにあるファイルを使用してpatchコマンドを適用する

、このコマンドが機能:

patch document.xml -i patch.diff -o final.xml 

しかし、彼らは別のディレクトリにあると私は、次のコマンドを使用しようとすると:私は取得

patch /var/local/documents/document.xml -i /var/local/patches/patch.diff -o /var/local/final/final.xml

を次のエラーが発生しました:

(Stripping trailing CRs from patch.) 
patching file {file} 
Hunk#1 FAILED at 20. 
1 out of 1 hunk FAILED -- saving rejects to file {file} 

私はどこかで、対応するために-dと-pを使用してくださいCTLYディレクトリと私は、私はそれを行うべきか見当もつかない...

答えて

5

です(あなたのケースで、それはパッチパスから2つの項目を取り除く必要があります):

cd /var/local/documents 
patch -p 2 -o ../final/final.xml document.xml < ../patches/patch.diff 
+0

ありがとうございました:)パッチファイルが/var/local/out/upload/patch.patchで、最終ファイルと元のファイルが両方とも/ var/local/upload/example_word/wordの場合、patchコマンドの外観はどうでしょうか? /document.xml? –

+1

あなたが '/ var/local/upload/example_word/word'にあると考えると、' patch -o final.xml -p 4 document.xml

+1

または' patch -o final.xml -p 5 document.xml <../../../ [..] + [..] + [..] + [out] + [upload] == 5)を相対パスで指定します。 –

1

これを試してみてください:はい、それは -pスイッチ

$ mv /var/local/final/final.xml /var/local/final/document.xml 
$ (cd /var/local/final && patch document.xml) < patch.diff 
$ mv /var/local/final/document.xml /var/local/final/final.xml 
+0

ありがとうございます。これはすばらしい回避策ですが、私はそれについても考えましたが、ファイルを動かさずにパッチを当てる必要がありました。 –

関連する問題