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

时间:2017-07-27 03:38:18

标签: node.js git

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

从该ID开始创建目录C和目录D.B中比A更新或A中找不到的所有文件都应该复制到C.应该复制在A中找到的B中缺少的文件到目录D.

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

实现这一目标的好方法是什么?

2 个答案:

答案 0 :(得分:4)

将两个目录的文件名列表作为两个数组,然后找出它们之间的区别。

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
});

答案 1 :(得分:0)

有一个名为dir-compare的npm软件包:

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);