我有一个包含文件夹和文件的目录。我想将整个目录及其所有内容复制到不同的位置,同时将所有文件重命名为更有意义的内容。我想使用nodejs来完成这一系列的操作。除了逐个移动并逐个重命名之外,有什么简单的方法可以做到这一点?
谢谢。
- 感谢您的评论!所以这是一个我想到的示例目录:
-MyFridge
- MyFood.txt
- MyApple.txt
- MyOrange.txt
- ...
- MyDrinks
- MySoda
- MyDietCoke.txt
- MyMilk.txt
- ...
- MyDesserts
- MyIce
...
我想用“Tom”代替“我的”,我也想在所有文本文件中将“我的”重命名为Tom。我可以使用node-fs-extra将目录复制到不同的位置,但是我很难重命名文件名。
定义自己的工具
const fs = require('fs');
const path = require('path');
function renameFilesRecursive(dir, from, to) {
fs.readdirSync(dir).forEach(it => {
const itsPath = path.resolve(dir, it);
const itsStat = fs.statSync(itsPath);
if (itsPath.search(from) > -1) {
fs.renameSync(itsPath, itsPath.replace(from, to))
}
if (itsStat.isDirectory()) {
renameFilesRecursive(itsPath.replace(from, to), from, to)
}
})
}
用法
const dir = path.resolve(__dirname, 'src/app');
renameFilesRecursive(dir, /^My/, 'Tom');
renameFilesRecursive(dir, /\.txt$/, '.class');