如何批量删除Android所有dimen文件夹中的指定dimen值?
批量删除Android项目多dimen文件夹中的指定dimen值
方法一:Shell脚本(Linux/macOS适用)
通过脚本遍历所有values-*目录下的dimens.xml,批量删除目标dimen条目,适合处理大量删除需求:
# 定义要删除的dimen名称,多个用空格分隔 TARGET_DIMENS="text_size_large margin_left_small padding_top_main" # 遍历所有values-*文件夹下的dimens.xml find . -type f -path "*values-*/dimens.xml" | while read file; do for dimen in $TARGET_DIMENS; do # 删除包含目标dimen的整行,同时生成备份文件(可自行移除备份) sed -i.bak "/<dimen name=\"$dimen\">.*<\/dimen>/d" "$file" rm -f "$file.bak" done done
- 替换
TARGET_DIMENS为你的目标dimen名称集合 - Windows用户可通过Git Bash或WSL运行该脚本
方法二:Python脚本(跨平台)
对shell不熟悉的话,用Python脚本更易读和调整:
import os import re # 要删除的dimen名称集合,可直接添加或从文本文件读取 target_dimens = {"text_size_large", "margin_left_small", "padding_top_main"} # 遍历项目中所有values-*文件夹 for root, dirs, files in os.walk("."): for dir_name in dirs: if dir_name.startswith("values-"): dimens_path = os.path.join(root, dir_name, "dimens.xml") if not os.path.exists(dimens_path): continue # 读取原文件内容,过滤目标dimen后重新写入 with open(dimens_path, "r", encoding="utf-8") as f: lines = f.readlines() with open(dimens_path, "w", encoding="utf-8") as f: for line in lines: match = re.search(r'<dimen name="([^"]+)">', line) if not (match and match.group(1) in target_dimens): f.write(line)
- 运行前建议备份项目,避免误操作
- 脚本会自动保留非目标dimen的所有内容
方法三:Android Studio结构替换(可视化操作)
如果不想写代码,用IDE自带的结构替换功能处理百级数量的dimen也很高效:
- 打开
Edit > Find > Replace Structurally... - 在「Search template」输入:
<dimen name="$NAME$">$VALUE$</dimen> - 「Replace template」留空(表示删除匹配内容)
- 点击「Edit Variables」,给
$NAME$添加所有要删除的dimen名称(支持批量导入列表) - 选择搜索范围为整个项目,预览无误后执行替换
注意事项
- 操作前务必备份项目或用Git提交当前状态,防止误删
- 删除后编译项目,检查是否存在引用已删除dimen的报错,同步清理相关引用
内容的提问来源于stack exchange,提问作者Hai Hack
相关产品推荐
相关产品推荐

