我有很多文件想要移动到文件夹格式为 YYYY-MM 的文件夹中,并且在该 YYYY-MM 中创建的任何文件都应放置在其中。我想使用
nodejs
来做到这一点
问题
文件
预期结果
我尝试了什么以及我陷入困境
const fs = require('fs');
const folderName = '/Users/myuser/targetFolder';
try {
if (!fs.existsSync(folderName)) {
fs.mkdirSync(folderName);
/***** stuck here as I can't figure out how to access the file create ****/
fs.readdirSync(folderPath).map(fileName => {
return path.join(folderPath, fileName);
});
}
} catch (err) {
console.error(err);
}
您现在可以获取每个文件的统计信息,提取从中创建的日期,从日期构造年份文件夹名称,创建年份文件夹,然后将文件移动到该文件夹。
尝试这个(注意您可能需要修改输入/目标文件夹, 因为这适用于以下输入文件夹和输出文件夹结构):
├───input
│ file1
│ file2
│
└───targetFolder
├───YYYY-MM
│ file1
│
└───YYYY-MM
file2
const fs = require('fs');
const inputFilesFolder = 'input';
const targetFolder = 'targetFolder';
try {
if (!fs.existsSync(targetFolder)) {
fs.mkdirSync(targetFolder);
}
fs.readdirSync(inputFilesFolder).map(fileName => {
// get file metadata
const stats = fs.statSync(`${inputFilesFolder}/${fileName}`);
console.log(fileName, ' stats: ', stats);
// skip directory
if (!stats.isDirectory()) {
// get date created
const birthtime = stats.birthtime;
// construct year folder name
const year = String(birthtime.getFullYear());
const month = String(birthtime.getMonth() + 1);
// pad month..
const monthPadded = month.length == 1 ? '0' + month : month;
const yearFolderName = `${year}-${monthPadded}`;
console.log('year folder name', yearFolderName);
// create year folder name if not exists
if (!fs.existsSync(`${targetFolder}/${yearFolderName}`)) {
fs.mkdirSync(`${targetFolder}/${yearFolderName}`);
}
// move file
try {
fs.renameSync(`${inputFilesFolder}/${fileName}`, `${targetFolder}/${yearFolderName}/${fileName}`)
console.log('moved', fileName);
} catch (err) {
console.log(err);
}
}
});
} catch (err) {
console.error(err);
}