如何根据HTML文件内部指定div标签内容批量重命名对应文件
实现方案
完全可以通过基础的bash命令+grep/awk工具实现需求,无需编写复杂程序,完整方案如下:
1. 先验证提取逻辑
执行下方命令,确认可以正确输出所有HTML文件中目标标签内的数字串:
grep -oP '<div id="myID" style="display:none">\K[^<]+' ./*.html
注:如果是macOS系统自带的grep不支持-P参数,可替换为sed -n 's/.*<div id="myID" style="display:none">\([^<]*\)<\/div>.*/\1/p' ./*.html验证
2. 完整重命名脚本(含重复文件防覆盖处理)
将以下代码保存为rename_html.sh,放在HTML文件所在的目录下:
#!/bin/bash # 遍历当前目录下所有HTML文件 for old_file in ./*.html; do # 跳过无匹配时通配符未展开的无效项 [ -f "$old_file" ] || continue # 提取目标标签内的字符串,取第一个匹配结果 file_id=$(grep -oP '<div id="myID" style="display:none">\K[^<]+' "$old_file" | head -n 1) # 跳过未匹配到目标标签的文件 [ -z "$file_id" ] && continue # 生成目标文件名,处理重复冲突 new_file="${file_id}.html" version=2 while [ -f "$new_file" ]; do new_file="${file_id} v${version}.html" ((version++)) done # 执行重命名 mv -v "$old_file" "$new_file" done
3. 执行步骤
- 给脚本添加执行权限:
chmod +x rename_html.sh - 建议先做模拟运行验证:把脚本最后一行的
mv -v改为echo mv -v,执行脚本后确认输出的重命名规则符合预期,再去掉echo执行正式重命名即可。
内容的提问来源于stack exchange,提问作者Ali Nato
相关产品推荐
相关产品推荐

