2017-07-27 68 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 
});