Применить несколько патчей на разных уровнях
Я пытаюсь применить патчи для нескольких файлов. Эти файлы присутствуют в разных каталогах на разных уровнях в каталоге верхнего уровня. Структура каталогов одинакова и для файлов исправлений.
Есть ли способ, которым я могу применить все патчи одновременно?
Я применяю их индивидуально, используя команду 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-filesh -cнеобходим, так как мы используем перенаправление.