如何递归地unifdef

How to unifdef recursively

如何在目录上递归使用 unifdef。 以下命令删除给定文件上 DEFINE_NAME 周围的代码。 我想从目录下的所有文件中删除代码。

unifdef -UDEFINE_NAME filename

如果您有 GNU findutils,您可以使用 find 来执行命令,找到名称以 .c.h:

结尾的文件
% find -name '*.[ch]' -exec unifdef -m -UDEFINE_NAME '{}' ';'

exec 获取将替换文件名的命令,{} 是替换找到的文件名的位置,; 结束命令。

另一方面,如果您使用 zsh 作为您的 shell,您可以使用递归 glob:

% unifdef -m -UDEFINE_NAME **/*.[ch]

请注意,您需要 -m 实际修改文件。