如何尋找并刪除系統(tǒng)里的重復(fù)文件,快速釋放磁盤空間?
不管是 Windows 電腦還是 Linux 電腦,在使用的過(guò)程中,或多或少都會(huì)留下很多重復(fù)的文件。這些文件不僅會(huì)占用我們的磁盤,還會(huì)拖累我們的系統(tǒng),所以,很有必要干掉這些重復(fù)的文件。
本文將介紹 6 種方法找到系統(tǒng)里的重復(fù)文件,讓你快速釋放硬盤空間!
1. 使用 diff 命令比較文件
diff 命令是 linux上非常重要的工具,用于比較文件的內(nèi)容,特別是比較兩個(gè)版本不同的文件以找到改動(dòng)的地方。diff在命令行中打印每一個(gè)行的改動(dòng)。最新版本的diff還支持二進(jìn)制文件。
diff程序的輸出被稱為補(bǔ)丁 (patch),因?yàn)長(zhǎng)inux系統(tǒng)中還有一個(gè)patch程序,可以根據(jù)diff的輸出將a.c的文件內(nèi)容更新為b.c。diff是svn、cvs、git等版本控制工具不可或缺的一部分。
當(dāng)兩個(gè)文件有差異時(shí),diff 命令將輸出差異點(diǎn):
在 diff 中 diff 的 normal 顯示格式有三種提示:
從上面的差異可知,因?yàn)?a.txt 的第3行 和 b.txt的第2行相等,所以 1,2c1 顯示的是a.txt 的前2行和b.txt的第1行是不同的。
由于2個(gè)文件的中的內(nèi)容123相同,相對(duì)于內(nèi)容123下面的行,b.txt 比 a.txt多了一行 hello
使用 diff 比較2個(gè)文件夾
從 diff 分析可知:
adir 文件夾與 bdir 文件夾各有一個(gè) a.txt 文件,其中第一行內(nèi)容是不同的。a.txt 第一行內(nèi)容時(shí) hello, b.txt 第一行的內(nèi)容時(shí) abc。
同時(shí),在 adir 文件中存在一個(gè)文件 b.txt, 在 bdir 文件夾中存在一個(gè)文件c.txt。
diff 命令的缺點(diǎn)是它一次只能比較兩個(gè)文件,如果我們要比較多個(gè)文件,這樣兩個(gè)兩個(gè)比較效率肯定非常低下。
2. 使用校驗(yàn)和
Linux cksum命令用于檢查文件的CRC是否正確。確保文件從一個(gè)系統(tǒng)傳輸?shù)搅硪粋€(gè)系統(tǒng)的過(guò)程中不被損壞。所以,如果文件中有任何字符被修改,都將改變計(jì)算后CRC校驗(yàn)碼的值。
校驗(yàn)和命令的原理是根據(jù)一定的算法將文件內(nèi)容進(jìn)行運(yùn)算生成一個(gè)校驗(yàn)碼,根據(jù)校驗(yàn)碼的不同來(lái)判斷文件內(nèi)容是否發(fā)生變化。
上面的輸出信息中,"2532900428 "表示校驗(yàn)碼,"50"表示字節(jié)數(shù)。
通過(guò)上面的校驗(yàn)碼可知,a.txt 和 b.txt 內(nèi)容是相同的。
3. 使用 find 命令
當(dāng)需要判斷一類文件時(shí),可以根據(jù)find命令查找給定給定文件,然后對(duì)這些文件進(jìn)行cksum校驗(yàn),輸出校驗(yàn)碼,根據(jù)校驗(yàn)碼進(jìn)行判斷是否發(fā)生變化。
根據(jù)校驗(yàn)碼可知 a.txt 與 b.txt 相同,c.txt 與 d.txt 不同。
4. 使用 fslint 命令
fslint是一個(gè)Linux工具來(lái)刪除文件,文件名不必要的和有問(wèn)題的文件,從而保持電腦清潔。
使用該工具時(shí)我們要有個(gè)注意事項(xiàng),就是我們需要給它一個(gè)起始位置。如果我們需要運(yùn)行大量文件,該命令可能需要相當(dāng)長(zhǎng)的時(shí)間才能完成查找。
5. 使用 fdupes 命令
fdupes 是 Linux 下的一個(gè)工具,它由 Adrian Lopez 用C編程語(yǔ)言編寫并基于 MIT 許可證發(fā)行,該應(yīng)用程序可以在指定的目錄及子目錄中查找重復(fù)的文件。fdupes 通過(guò)對(duì)比文件的 MD5 簽名,以及逐字節(jié)比較文件來(lái)識(shí)別重復(fù)內(nèi)容,fdupes 有各種選項(xiàng),可以實(shí)現(xiàn)對(duì)文件的列出、刪除、替換為文件副本的硬鏈接等操作。
-r 選項(xiàng)代表遞歸,表示它將在各個(gè)目錄下面使用遞歸的方式來(lái)查找重復(fù)文件。但是,Linux 下有許多重復(fù)文件是很重要的(比如用戶的 .bashrc 和 .profile 文件),如果被刪除將導(dǎo)致系統(tǒng)異常。
fdupes 命令的常用選項(xiàng)如下表所示:
6. 使用 rdfind 命令
Rdfind 意即 redundant data find(冗余數(shù)據(jù)查找),是一個(gè)通過(guò)訪問(wèn)目錄和子目錄來(lái)找出重復(fù)文件的自由開(kāi)源的工具。它是基于文件內(nèi)容而不是文件名來(lái)比較。
Rdfind 使用排序算法來(lái)區(qū)分原始文件和重復(fù)文件。如果你有兩個(gè)或者更多的相同文件,Rdfind 會(huì)很智能的找到原始文件并認(rèn)定剩下的文件為重復(fù)文件。一旦找到副本文件,它會(huì)向你報(bào)告。你可以決定是刪除還是使用硬鏈接或者符號(hào)(軟)鏈接代替它們。
我們還可以在 dryrun 中運(yùn)行。
rdfind 命令還提供一些忽略空文件(-ignoreempty)和跟隨符號(hào)鏈接(-followsymlinks)之類的選項(xiàng)。下面詳細(xì)解釋它的常用選項(xiàng)。
這里需要我們注意一下,rdfind命令提供了使用 -deleteduplicates true 設(shè)置刪除重復(fù)文件的選項(xiàng)。顧名思義,使用這個(gè)選項(xiàng)它將自動(dòng)刪重復(fù)的文件。
當(dāng)然,前提是我們也必須在系統(tǒng)上安裝 rdfind 命令。