跨平台可定製查詢重複檔案工具

2021-07-25 00:26:21 字數 2354 閱讀 3533

自己最真實的需求,從大學時期產生的各種檔案一直被我存著,重複檔案就再所難免。已經存在幾款查詢重複工具可以滿足我的基本需求,但是我的個別需求卻無法滿足,不得不讓我重新造輪子,現在將我實現的小工具分享給大家。

我認為具有如下優點

工具特性

備註####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...