Node.js中基于文件夹结构验证图片与视频文件名规范
验证图片与视频命名规范的Node.js脚本
作为Node.js新手,搞定这个命名规范验证其实不难,我给你写个实用的脚本,咱们一步步来:
首先先明确要验证的规则细节,避免歧义:
- 图片文件必须放在
Subject(Science)/Physics/images下,文件名格式为Science_Physics_XXX_IMG_YYY.后缀(XXX和YYY是三位数字,比如002) - 视频文件必须放在
Subject(Science)/Physics/videos下,文件名格式为Science_Physics_XXX_VD_YYY.后缀 - 额外可扩展:文件名里的XXX(Physics ID)和YYY(文件编号)可以对应你例子里的路径描述,咱们先聚焦核心的「命名格式+路径匹配」验证
具体脚本实现(异步方式,符合Node.js最佳实践)
const fs = require('fs').promises; const path = require('path'); // 定义根目录和目标子文件夹路径(根据你的实际结构调整) const rootDir = './Subject(Science)'; const physicsImagesDir = path.join(rootDir, 'Physics', 'images'); const physicsVideosDir = path.join(rootDir, 'Physics', 'videos'); // 定义命名规则的正则表达式 const imageFileNameRegex = /^Science_Physics_(\d{3})_IMG_(\d{3})\.\w+$/; // 匹配图片文件名 const videoFileNameRegex = /^Science_Physics_(\d{3})_VD_(\d{3})\.\w+$/; // 匹配视频文件名 async function validateFileNaming() { try { // 验证images文件夹下的文件 console.log('=== 开始验证Physics/images文件夹 ==='); const imageFiles = await fs.readdir(physicsImagesDir); for (const file of imageFiles) { const fullPath = path.join(physicsImagesDir, file); // 跳过文件夹(如果存在的话) const stats = await fs.stat(fullPath); if (stats.isDirectory()) continue; if (imageFileNameRegex.test(file)) { console.log(`✅ 符合规范: ${file}`); // 如果你需要额外验证编号对应关系(比如XXX是Physics ID,YYY是图片编号),可以在这里加逻辑 // const matches = file.match(imageFileNameRegex); // const physicsId = matches[1]; // const imageNumber = matches[2]; // 比如检查是否和文件夹名或其他信息对应,按需扩展即可 } else { console.log(`❌ 不符合规范: ${file} - 文件名需遵循Science_Physics_XXX_IMG_YYY.后缀格式`); } } // 验证videos文件夹下的文件 console.log('\n=== 开始验证Physics/videos文件夹 ==='); const videoFiles = await fs.readdir(physicsVideosDir); for (const file of videoFiles) { const fullPath = path.join(physicsVideosDir, file); const stats = await fs.stat(fullPath); if (stats.isDirectory()) continue; if (videoFileNameRegex.test(file)) { console.log(`✅ 符合规范: ${file}`); // 同样可以扩展编号验证逻辑 } else { console.log(`❌ 不符合规范: ${file} - 文件名需遵循Science_Physics_XXX_VD_YYY.后缀格式`); } } console.log('\n✅ 验证完成!'); } catch (err) { console.error('❌ 验证过程中出错:', err.message); } } // 执行验证函数 validateFileNaming();
怎么用这个脚本:
- 把脚本保存为
validate-naming.js,放在Subject(Science)的同级文件夹(或者调整rootDir的路径为正确的相对路径) - 打开终端,运行命令:
node validate-naming.js - 查看输出结果,就能清晰知道哪些文件符合规范,哪些需要修改
可扩展的优化点:
- 如果需要验证文件名里的XXX(Physics ID)和实际Physics文件夹的ID对应,可以读取Physics文件夹名称,提取ID部分和文件名的XXX对比
- 如果要限制文件后缀(比如图片只允许png/jpg,视频只允许mp4/avi),可以修改正则表达式,比如
/^Science_Physics_(\d{3})_IMG_(\d{3})\.(png|jpg|jpeg)$/ - 可以把不符合规范的文件整理成列表,甚至实现自动重命名(注意:自动重命名前一定要先备份文件!)
内容的提问来源于stack exchange,提问作者user3565243
相关产品推荐
相关产品推荐

