2017-07-27 92 views
0

中的两个目录Id喜欢执行两个目录和子文件夹内的所有文件的比较。文件夹结构对于这两个文件可能不同的目录是相同的。称它们为目录A和目录B.如何递归比较节点

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

我喜欢使用节点和库或者运行其他CLI工具(如git),也许可以做我没有太多的努力。

什么是一些很好的方法来实现这个目标?

+0

为什么你不跟我们分享你的第一枪?你不应该指望别人提出一个完整的解决方案,而没有先尝试自己的东西 – faboolous

+0

我完全理解你的观点,但没有寻找一个完整的解决方案,只是一些方法来帮助我开始,并没有太多的兔子洞。 我是两个女儿的父亲,他们希望有更多的时间,下面的解决方案可以帮助我节省数小时,否则我可能因为这个特定应用程序缺乏经验而花费了不少时间。与我的女儿们在一起度过了几个小时。 –

回答

1

获取两个目录的文件名列表为两个数组,然后找到他们之间的区别。

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