Node.js实现提取文件名重命名文件名

Posted 前端开发自留地

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Node.js实现提取文件名重命名文件名相关的知识,希望对你有一定的参考价值。

Node.js可以跑服务器,也可以构建一些前端工具,实现例如像.bat后缀的批处理文件,一点击,文件夹里面的图片全部重命名等功能;

需求描述

设计丢来几百个表情文件,我需要提取文件名拼成一个对象将来JS中使用;其次就是重命名文件名喽。

Node.js实现提取文件名、重命名文件名Node.js实现提取文件名、重命名文件名

手工修改第一个文件名到一半的时候就放弃了,不能这样搬砖。。。上Node.js,反正电脑上Node早已安装了。

需求拆分

1、提取文件名打印成对象,这个应该妥妥的。在

一文中,

glob(使用shell使用的模式匹配文件)就干过提取文件名为对象给webpack的入口entry用的

Node.js实现提取文件名、重命名文件名

2、常用的gulp-rename提供简单的文件重命名方法

安装

前提假设你已安装了node了。

npm install gulp glob gulp-rename --save-dev

新建gulpfile.js

Node.js实现提取文件名、重命名文件名

const gulp = require('gulp');
const path = require('path');
const glob = require('glob');
const rename = require('gulp-rename'); gulp.task('img', callback => {
   const files = glob.sync('face/*.svg');
   const entry = {};    files.forEach(filepath => {
       const pathObj = path.parse(filepath);
       //path.parse返回:        // { root: '',        //   dir: 'face',        //   base: '1f41e-瓢虫.svg',        //   ext: '.svg',        //   name: '1f41e-瓢虫' }        const ary = pathObj.name.split('-');        entry[ary[0]] = ary[1];    });
   console.log(entry);
   return gulp.src(files)    .pipe(rename(function (path) {        path.basename =  path.basename.replace(/-.*/,'');     }))     .pipe(gulp.dest('build')); }); gulp.task('default',['img']);

运行任务

gulp

控制台打印出对象了生成的build文件夹下文件名都已去掉中文啦。



以上是关于Node.js实现提取文件名重命名文件名的主要内容,如果未能解决你的问题,请参考以下文章

如果目标文件不存在,则在 Node.js 中异步重命名文件

Node.js 中 fs.renameSync 报错

批量 zip 提取并使用 zip 文件名重命名

从Node.js Stream写入多个文件

node.js - 安全的图像文件上传

重命名文件权限