【问题标题】:I want to rename a particular string in multiple filenames in nodejs我想在nodejs的多个文件名中重命名一个特定的字符串
【发布时间】:2020-01-13 14:14:03
【问题描述】:

我想重命名文件名中的特定字符串。我正在使用 glob 和 path 从多个位置提取多个文件名。现在我只想将这些文件如 abcd-change-name.js 重命名为 abcd-name-changed.js

这是我到目前为止所做的事情

 var glob = require("glob")
 var path = require('path')
 const fs = require('fs')

 glob(process.cwd() + "/directory/**/*-change-name*.js", {}, function (er, 
 files) {
  for(i=0; i<files.length; i++){
     var f = path.basename(files[i])
     var d = path.dirname(files[i])
     fs.renameSync(files[i] , d + '/name-changed.js', function (err) {
        if (err) throw err;
        console.log('renamed complete');
      });
  }
 })

代码正在将各自文件夹中所有扩展名为 js 的文件更改为 name-changed.js。

【问题讨论】:

    标签: javascript node.js glob


    【解决方案1】:

    您的代码使用了 fs.renameSync(files[i], d + '/name-changed.js', ... 行,但这行代码将 files[i] 重命名为 '[foldername]/name-changed.js'。

    我建议有类似fs.renameSync(files[i], files[i].replace('change-name', 'name-changed'), ...

    换句话说,您已经告诉fs 将文件重命名为“name-changed.js”的文件名,但您希望它包含原始文件名数据,但将“change-name”替换为“name” -改变了'。

    这是基于您的代码的完整代码示例。

     var glob = require("glob")
     var path = require('path')
     const fs = require('fs')
    
     glob(process.cwd() + "/directory/**/*-change-name*.js", {}, function (er, 
     files) {
      for(i=0; i<files.length; i++){
         var f = path.basename(files[i])
         var d = path.dirname(files[i])
         fs.renameSync(files[i] , files[i].replace('change-name', 'name-changed'), function (err) {
            if (err) throw err;
            console.log('renamed complete');
          });
      }
     })
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-16
      • 1970-01-01
      • 2015-06-21
      • 2020-05-05
      • 1970-01-01
      • 2017-11-13
      相关资源
      最近更新 更多