yoy 如何递归比较节点中的两个目录



>Id 喜欢对两个目录和子文件夹中的所有文件进行比较。两个目录的文件夹结构将相同,文件可能不同。称它们为目录 A 和目录 B。

从该 id 喜欢创建一个目录 C 和目录 D。B 中比 A 更新或在 A 中找不到的所有文件都应复制到 C。B 中缺少的文件在 A 中找到的文件应复制到目录 D。

我喜欢使用 node 和库或运行其他一些 CLI 工具,如 git,也许可以毫不费力地完成我描述的内容。

实现这一点会有什么好方法?

获取两个数组的文件名列表,然后找到它们之间的差异。

const _ = require('lodash');
const fs = require('fs');
const aFiles = fs.readdirSync('/path/to/A');
const bFiles = fs.readdirSync('/path/to/B');
_.difference(aFiles, bFiles).forEach(v => {
// Files missing from B that are found in A should be copied to directory D
// Move file v to directory D
});

_.difference(bFiles, aFiles).forEach(v => {
// Files missing from A that are found in B should be copied to directory C
// Move file v to directory C
});

有一个 npm 包叫做 dir-compare:

const dircompare = require('dir-compare');
const options = { compareSize: true };
const path1 = "dir1";
const path2 = "dir2";
const res = dircompare.compareSync(path1, path2, options)
console.log(res);

最新更新