gpt4 book ai didi

node.js - NodeJS - 递归复制和重命名现有目录中的所有内容

转载 作者:行者123 更新时间:2023-12-04 00:38:49 25 4
gpt4 key购买 nike

我有一个包含文件夹和文件的目录。我想将整个目录及其所有内容复制到不同的位置,同时将所有文件重命名为更有意义的名称。我想用nodejs来完成这一系列的操作。除了一个一个地移动它并一个一个地重命名之外,还有什么简单的方法可以做到这一点?

谢谢。

-- 感谢您的评论!所以这是我想到的示例目录:

-MyFridge
- MyFood.txt
- MyApple.txt
- MyOrange.txt
- ...
- MyDrinks
- MySoda
- MyDietCoke.txt
- MyMilk.txt
- ...
- MyDesserts
- MyIce
...

例如,我想用“Tom”替换“My”,我还想在所有文本文件中将“My”重命名为 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');

关于node.js - NodeJS - 递归复制和重命名现有目录中的所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21859783/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com