如何在Linux下通过命令行指定Meld需过滤排除的文件/目录?
如何在Linux下通过命令行指定Meld需过滤排除的文件/目录?
我太懂这种无奈了——Meld确实在功能和速度上比WinMerge差点意思,但Linux下没得选的时候也只能硬用。而且它的命令行文档确实有点滞后,明明有办法实现命令行过滤,却没在meld --help里写清楚,挺坑人的。
下面给你两种可行的解决方案:
方案一:用--exclude直接指定(Meld 3.20+版本可用)
如果你的Meld版本是3.20或更新的,其实可以直接用--exclude参数跳过不想比较的文件/目录,多次使用该参数就能添加多个过滤规则:
# 排除单个文件类型 meld --exclude "*.log" dir1 dir2 # 同时排除多个规则:日志文件、node_modules目录、.git目录 meld --exclude "*.log" --exclude "node_modules/" --exclude ".git/" dir1 dir2
这个参数属于「功能已实现但文档没跟上」的情况,所以meld --help里没提到,但实际是可以正常使用的。
方案二:自定义过滤器文件(兼容所有版本)
如果你的Meld版本比较旧,不支持--exclude,可以先创建自定义过滤规则文件,再在命令行调用它:
- 创建过滤器文件,比如放在
~/.config/meld/filters/my_custom_ignore.filter,内容格式为XML:
<?xml version="1.0" encoding="UTF-8"?> <filter name="My Ignore Rules" enabled="true"> <patterns> <!-- 排除.log结尾的文件 --> <pattern type="exclude">*.log</pattern> <!-- 排除node_modules目录 --> <pattern type="exclude">node_modules/</pattern> <!-- 排除.git目录 --> <pattern type="exclude">.git/</pattern> </patterns> </filter>
- 命令行调用Meld时,指定使用这个过滤器:
meld --filter "My Ignore Rules" dir1 dir2
你也可以先在Meld的GUI里(路径:编辑→首选项→过滤器)可视化创建好规则,然后直接用过滤器名称调用,效果完全一致。
备注:内容来源于stack exchange,提问作者Stan




