我希望你能幫助我解決以下問題。我有24個目錄,每個目錄都包含許多(1000個)文件。我想找出哪些目錄組合包含最多的重複(僅限名稱)文件。例如,如果我們只考慮4個目錄在不同的目錄中查找具有相同名稱的文件並計數重複項
DIR1 DIR2 DIR3 dir4
與下面的目錄內容
DIR1
1.fa 2.fa 3.fa 4.fa 5。發
DIR2
1.fa 10.fa 15.fa
DIR3
1.fa 2.fa 3.fa
dir4
1.fa 2 .fa 3.fa 5.fa 8.fa 10.fa
因此,目錄dir1和dir4的組合包含最重複的文件(4)。
問題變得非常大,24個目錄,所以我想我可能會使用暴力方法。沿
- 計數線發生在所有24個目錄
- 刪除一個目錄和計數的重複文件數量
- 更換目錄,再下降一個再算上數
- 所有重複文件的東西重複所有目錄
- 得到23個目錄,最大數量的重複文件
- 重複的子集上述2-5,並保持22個目錄與大多數重複文件
- 重複,直到只有2個目錄留下
- 選擇的目錄與重複的文件
最大數量的組合。如果任何人有這樣做我會爲一些建議非常感謝的一種方式。我想過使用fdupes
或diff
,但無法弄清楚如何解析輸出和彙總。
你僅限於shl腳本,或者你可以使用Perl/Python嗎? – amphibient
我沒有很多perl或python的經驗,但我願意放手! – alexd106
當你說'哪個目錄的組合?'你是指'哪2個目錄',或者「什麼是最少數量的目錄......」?如果「組合目錄」的編號沒有限制,那麼「O(1)」答案總是隻取所有目錄,並且總是包含大量重複文件。如果你的意思是選擇2個目錄,那麼在'P'時間就有聰明的解決方案。如果你的意思是選擇重複次數最少的目錄集,這可以減少到最小集合覆蓋問題,並且是'NP' –