Применить несколько патчей на разных уровнях
Я пытаюсь применить патчи для нескольких файлов. Эти файлы присутствуют в разных каталогах на разных уровнях в каталоге верхнего уровня. Структура каталогов одинакова и для файлов исправлений.
Есть ли способ, которым я могу применить все патчи одновременно?
Я применяю их индивидуально, используя команду patch -p1.
1 ответ
Вы могли бы сделать что-то вроде:
find . -iname '*.patch' -execdir sh -c 'patch -p1 < $0' {} \;
это find
команда:
- ищет файлы в текущем каталоге (
.
) рекурсивно - которые имеют имена файлов, оканчивающиеся на
.patch
(отрегулируйте в соответствии с любой схемой именования, которой следуют ваши файлы исправлений) - и в каталоге, где был найден соответствующий файл, запускается
sh -c 'patch -p1 < $0' matched-file
:$0
это первый аргумент, который соответствует файлу, поэтому команда по существуpatch -p1 < matched-file
sh -c
необходим, так как мы используем перенаправление.