自己最真實的需求,從大學時期產生的各種檔案一直被我存著,重複檔案就再所難免。已經存在幾款查詢重複工具可以滿足我的基本需求,但是我的個別需求卻無法滿足,不得不讓我重新造輪子,現在將我實現的小工具分享給大家。
我認為具有如下優點
工具特性
備註####point####
標識開始列印.
開頭目錄
####compress####
標識開始列印字尾為rar zip iso tar gz
的檔案
使用(均在各系統命令行下執行,在工具執行完成後開啟output.txt
檔案檢視列印)
windows
windows.exe -path=f:\panshiqu 1>output.txt 2>&1
linux
./linux -path=/home/panshiqu > output.txt
mac./mac -path=/home/panshiqu > output.txt
提醒
你可在分析列印後大致推測出那兩個資料夾可能相同,這裡推薦你使用beyond compare
比對兩個龐大的資料夾是否相同,記得取消對勾session => session settings => comparison => compare timestamps
用於不比對時間戳
原始碼
package main
import (
"bytes"
"crypto/md5"
"flag"
"fmt"
"io"
"os"
"path/filepath"
"sort"
"strings"
)var kv map[string]string
var point string
var compress string
var path = flag.string("path", "", "")
// filelist 檔案列表
func filelist(path string)
if info.isdir()
return nil
} if info.size() == 0
lowername := strings.tolower(info.name())
if strings.hassuffix(lowername, ".rar") ||
strings.hassuffix(lowername, ".zip") ||
strings.hassuffix(lowername, ".iso") ||
strings.hassuffix(lowername, ".tar") ||
strings.hassuffix(lowername, ".gz")
f, err := os.open(path)
if err != nil
defer f.close()
md5hash := md5.new()
if _, err := io.copy(md5hash, f); err != nil
key := fmt.sprintf("%x", md5hash.sum(nil))
return nil
}); err != nil
}// sortone 一維排序
type sortone string
func (s sortone) len() int
func (s sortone) less(i, j int) bool
func (s sortone) swap(i, j int)
// sorttwo 二維排序
type sorttwo string
func (s sorttwo) len() int
func (s sorttwo) less(i, j int) bool
func (s sorttwo) swap(i, j int)
func main()
} for i := 0; i < len(tmp); i++
sort.sort(sorttwo(tmp))
for _, v := range tmp
fmt.println()
} fmt.println("####point####")
for _, v := range point
fmt.println("####compress####")
for _, v := range compress
}
跨平台相關
二者區別 strdup是posix,strdup是windows特定。在unix上,使用的strdup。在不同作業系統的lib庫名字不同的,為了讓程式可以多平台,需要在巨集定義中判斷當前執行作業系統和編譯器的型別,動態調整。windows win32 win32 linux linux linux ...
跨平台工具
作圖 做好圖 inkspace 向量圖 inpaint 提供類似 photoshop 的基礎功能,簡單易用 imagemagick pdf 處理 1.small pdf 2.i love pdf 編輯器1.sublime text 2.typora markdown 3.texmaker latex...
可持久化並查集 可撤銷並查集
主要學習的blog 1 將乙個點的父親 並查集那個fa 進行更改 實際上是新增乙個資訊點 update。2 查詢某個時間點下乙個pos對應的資訊點編號。3 查詢乙個點的父節點。4 更新乙個點的deep值,不用新寫函式,可以用3號操作找到編號後 5 初始化build。pragma gcc optimi...