我正在尝试为多个文件应用补丁。这些文件位于顶级目录中不同级别的不同目录中。补丁文件的目录结构也相同。
有什么方法可以让我一次性应用所有补丁吗?
我正在使用 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
是必需的,因为我们使用重定向。