Aplique vários arquivos .patch

5

Eu tenho um diretório com .patch arquivos, gerado usando diff.

Eu gostaria de aplicar todos esses patches usando patch -p1 em outro diretório.

Mas o patch leva apenas um arquivo, a menos que eu cat .

Qual seria o comando para aplicar vários arquivos usando xargs ou uma ferramenta semelhante.

    
por styts 13.01.2010 / 16:46

3 respostas

2

Se cat funcionar, por que não usá-lo?

Para usar find e xargs :

find dirname -name namespec -print0 | xargs -0 patch patchargs

Exemplo:

find src/networking -type f -name 'network*.patch' -print0 | xargs -0 patch -p2
    
por 13.01.2010 / 16:58
10

Supondo que você esteja usando o bash / sh / zsh etc ...

cd /path/to/source
for i in /path/to/patches/*.patch; do patch -p1 < $i; done
    
por 13.01.2010 / 16:58
1

Isso realmente funciona (no Bash):

shopt -s globstar
for file in /path/to/patches/**/*.patch
do
    patch -p1 < "$file"
done
    
por 17.06.2016 / 10:46