| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 | const path = require('path');const fs = require('fs');// 获取当前命令行上下文路径const currentDirectory = process.cwd();console.log(`----------------------------`)const backupPath = path.join(currentDirectory, '/backup/')//获取文件列表const files = fs.readdirSync(backupPath);if (files.length > 5) {    //遍历文件列表    console.log(`准备清理备份文件...`)    let newfiles = []    files.forEach((file) => {        const time = file.split('_');        if (time.length >= 2) {            newfiles.push({time: time[0], file: file})        }    })    //文件列表排序    newfiles = arrKeySort(newfiles, 'time', 'desc');    //移除文件    newfiles.forEach((item, index) => {        if (index >= 5) {            fs.unlinkSync(backupPath + item.file);            console.log(`已清理${item.file}`)        }    })    console.log('---------- 清理完成 ----------')} else {    console.log(`备份文件小于5份,不执行清理操作...`)}//数组对象排序function arrKeySort(arr, field = 'id', order = 'asc'){    return arr.sort(arrCompare(field, order));}function arrCompare(key, order = 'asc'){    return function innerSort(a, b) {        if (!a.hasOwnProperty(key) || !b.hasOwnProperty(key)) {            // 该属性在任何一个对象上都不存在            return 0;        }        const varA = (typeof a[key] === 'string')            ? a[key].toUpperCase() : a[key];        const varB = (typeof b[key] === 'string')            ? b[key].toUpperCase() : b[key];        let comparison = 0;        if (varA > varB) {            comparison = 1;        } else if (varA < varB) {            comparison = -1;        }        return (            (order === 'desc') ? (comparison * -1) : comparison        );    };}
 |