Diffを使用して生成された.patch
ファイルを含むディレクトリがあります。
patch -p1
を使用して、これらのすべてのパッチを別のディレクトリに適用したいと思います。
しかし、私がcat
でない限り、パッチは1つのファイルしか取りません。
xargs
または同様のツールを使用して複数のファイルを適用するコマンドは何でしょうか。
cat
が機能する場合は、それを使用してみませんか?
find
およびxargs
を使用するには:
find dirname -name namespec -print0 | xargs -0 patch patchargs
例:
find src/networking -type f -name 'network*.patch' -print0 | xargs -0 patch -p2
Bash/sh/zshなどを使用していると仮定します...
cd /path/to/source
for i in /path/to/patches/*.patch; do patch -p1 < $i; done
受け入れられた答えは私にとってはうまくいきませんでした、パッチは1つのコマンドラインで複数のパッチファイルを取ることができると想定しているようです。私の解決策:
find /tmp/patches -type f -name '*.patch' -print0 | sort -z | xargs -t -0 -n 1 patch -p0 -i
検索:パッチファイルを検索します
並べ替え:パッチファイルを並べ替えて、順序を維持します(例:001が002より前)
xargs:stdinを引数として使用してパッチを呼び出す
これは実際に機能します(Bashで):
shopt -s globstar
for file in /path/to/patches/**/*.patch
do
patch -p1 < "$file"
done