土法煉鋼找出重複檔案較多的目錄

網路磁碟已經成為許多公司共用檔案的地方, 但也因為每個人使用習慣不同, 常常把檔案複製到不同地方, 而造成版本不同.

為了容易找到重複檔案較多的目錄, 就用試算表軟體簡單地分析一下, 用這些步驟來完成:

  1.     快下班的時候, 先把網路磁碟的檔案建立清單. ( dir /a-d /b /s > a.txt )
  2.     用試算表開啟 a.txt , 另存成試算表檔案.
  3.     開始加工, 用 find 函數找出所有 "\" , 這邊沒有用巨集, 而是重複多次, 再用 iferror , 如果已經沒有 "\" , 就用前一次找到的位置.
  4.     例如總共取 10 次. A 欄是"C:\Windows\System32\cmd.exe" , B 欄是 0 , C~L 欄是 =iferror(find($A1, "\", B1+1), B1)
  5.     (過渡時可以用 M1 = L1 - K1 , 然後計算全部 M 欄, 如果加總為 0 , 表示 K 跟 L 是一樣的, 那 L 就超過最後一個 "\" 的位置了, 再往前推就可以找到有最後一個 "\" 位置的檔名.
  6.     找出 "\" 位置後, 就可以用 iferror(mid($a1, c1+1, c1-b1-1),"") 取得每層目錄的名稱. 與前面一樣, 如果字串異常, 就用空白代替.
  7.     這樣就找出網路磁碟上的所有檔案, 以及每個檔案各層目錄以及檔名了. 接下來讀最靠右邊的兩欄, 就是最後一層目錄跟檔案名稱, 這邊比較單純, 用好幾層 if(Z1="",if(Y1="",....,Y1),Z1) 這樣來找出檔名跟上一層目錄.
  8.     篩選掉檔名是 Thumbs.db , _DS_Store 等檔案, 然後對剛剛找到的最下層目錄跟檔名, 合併產生另一欄.
  9.     這邊原本想用 countif(AD:AD,AD1) 的方式, 找出重複的檔案, 但是發現太耗CPU資源, 而且只需要"找到重複字串(最後一層目錄+檔名)", 不需要"統計重複次數; 所以改了一個方式, 把"最後一層目錄+檔名"這欄排序(假設是 AD ), 再用函式 if(AD2=AD1,1,if(AD2=AD3,1,0)) , 這樣就可以找出所有重複的檔案(連最後一層目錄也相同).
  10.     找出重複檔案後, 再用檔名跟最後一層目錄排序, 就可以找到有重複檔案的樣本目錄, 再把目錄字串複製到 WinMerge 等軟體比對, 就可以發現裡面檔案不一致的情況, 再通知該目錄使用者.

就這樣, 其實工具用得不多, 而重要的是每個步驟需要的作法, 再把資料轉成不同格式處理.

https://www.linkedin.com/pulse/%25E5%259C%259F%25E6%25B3%2595%25E7%2585%2589%25E9%258B%25BC%25E6%2589%25BE%25E5%2587%25BA%25E9%2587%258D%25E8%25A4%2587%25E6%25AA%2594%25E6%25A1%2588%25E8%25BC%2583%25E5%25A4%259A%25E7%259A%2584%25E7%259B%25AE%25E9%258C%2584-%25E8%2590%258A%25E5%25A7%2586-%25E5%258F%25B2