Применить несколько патчей на разных уровнях

Я пытаюсь применить патчи для нескольких файлов. Эти файлы присутствуют в разных каталогах на разных уровнях в каталоге верхнего уровня. Структура каталогов одинакова и для файлов исправлений.

Есть ли способ, которым я могу применить все патчи одновременно?

Я применяю их индивидуально, используя команду 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 необходим, так как мы используем перенаправление.
Другие вопросы по тегам