大神教你在Linux中查找和刪除重復(fù)文件的4種方法
如果您習(xí)慣于從網(wǎng)絡(luò)下載各種內(nèi)容,則整理您的主目錄甚至系統(tǒng)可能會(huì)特別困難。
您可能會(huì)發(fā)現(xiàn)自己下載了相同的mp3,pdf,zip(以及所有其他類型的文件擴(kuò)展名)并將其復(fù)制到其他目錄。這可能會(huì)導(dǎo)致目錄中充斥著各種無用的重復(fù)內(nèi)容。
在本教程中,您將學(xué)習(xí)如何使用rdfind和fdupes命令行工具以及稱為DupeGuru和FSlint的GUI工具在Linux中查找和刪除重復(fù)文件。
需要注意的是 – 永遠(yuǎn)要小心你在系統(tǒng)上刪除的內(nèi)容,因?yàn)檫@可能會(huì)導(dǎo)致不必要的數(shù)據(jù)丟失。如果您正在使用一個(gè)新工具,首先在一個(gè)測試目錄中嘗試它,在那里刪除文件不會(huì)出現(xiàn)問題。
1. Rdfind –在Linux中查找重復(fù)文件
Rdfind 意即 redundant data find(冗余數(shù)據(jù)查找),是一個(gè)通過訪問目錄和子目錄來找出重復(fù)文件的自由開源的工具。它是基于文件內(nèi)容而不是文件名來比較。Rdfind 使用排序算法來區(qū)分原始文件和重復(fù)文件。如果你有兩個(gè)或者更多的相同文件,Rdfind 會(huì)很智能的找到原始文件并認(rèn)定剩下的文件為重復(fù)文件。一旦找到副本文件,它會(huì)向你報(bào)告。你可以決定是刪除還是使用硬鏈接或者符號(hào)(軟)鏈接代替它們。
要在Linux中安裝rdfind,請根據(jù)您的Linux發(fā)行版使用以下命令。
- $ sudo apt-get install rdfind [在 Debian/Ubuntu 上]
- $ sudo yum install epel-release && $ sudo yum install rdfind [在 CentOS/RHEL 上]
- $ sudo dnf install rdfind [在 Fedora 22+ 上]
- $ sudo pacman -S rdfind [在 Arch Linux 上]
要在目錄上運(yùn)行rdfind,只需鍵入rdfind和目標(biāo)目錄。下面來看一個(gè)例子:
- linuxmi@linuxmi:~$ rdfind /home/user
正如你所看到rdfind將結(jié)果保存在一個(gè)文件名為RESULTS.TXT位于從那里你運(yùn)行該程序的目錄中。該文件包含rdfind找到的所有重復(fù)文件。您可以查看文件,并根據(jù)需要手動(dòng)刪除重復(fù)的文件。
您可以做的另一件事是使用-dryruna選項(xiàng),該選項(xiàng)將提供重復(fù)項(xiàng)列表,而無需執(zhí)行任何操作:
- rdfind -dryrun true /home/user
找到重復(fù)項(xiàng)后,您可以選擇將其替換為硬鏈接。
- rdfind -makehardlinks true /home/user
如果您希望刪除重復(fù)項(xiàng),則可以運(yùn)行。
- rdfind -deleteduplicates true /home/user
要查看rdfind的其他有用選項(xiàng),可以使用rdfind手冊。
- man rdfind
2. Fdupes –在Linux中掃描重復(fù)文件
Fdupes是另一個(gè)程序,它使您可以識(shí)別系統(tǒng)上的重復(fù)文件。它是免費(fèi)的并且是開源的,并且使用C語言編寫。它使用以下方法來確定重復(fù)的文件:
- 比較部分md5sum簽名
- 比較完整的md5sum簽名
- 逐字節(jié)比較驗(yàn)證
就像rdfind一樣,它具有類似的選項(xiàng):
- 遞歸搜索
- 排除空文件
- 顯示重復(fù)文件的大小
- 立即刪除重復(fù)項(xiàng)
- 排除其他所有者的文件
要在Linux中安裝fdupes,請根據(jù)Linux發(fā)行版使用以下命令。
- $ sudo apt-get install fdupes [在Debian / Ubuntu上]
- $ sudo yum install epel-release && $ sudo yum install fdupes [在CentOS / RHEL上]
- $ sudo dnf install fdupes [在Fedora 22+上]
- $ sudo pacman -S fdupes [在Arch Linux上]
Fdupes語法類似于rdfind。只需鍵入命令,然后鍵入您要掃描的目錄即可。
- $ fdupes <dir>
- linuxmi@linuxmi:~$ fdupes /home/linuxmi/www.linuxmi.com
- /home/linuxmi/www.linuxmi.com/linuxmi.txt
- /home/linuxmi/www.linuxmi.com/linuxmi(復(fù)件).txt
要遞歸地搜索文件,必須像這樣指定-r選項(xiàng)。
- $ fdupes -r <dir>
- linuxmi@linuxmi:~$ fdupes -r /home/linuxmi/www.linuxmi.com
- /home/linuxmi/www.linuxmi.com/linuxmi.txt
- /home/linuxmi/www.linuxmi.com/linuxmi(復(fù)件).txt
- /home/linuxmi/www.linuxmi.com/color-schemes/.git/logs/refs/remotes/origin/HEAD
- /home/linuxmi/www.linuxmi.com/color-schemes/.git/logs/refs/heads/master
- /home/linuxmi/www.linuxmi.com/color-schemes/.git/logs/HEAD
- /home/linuxmi/www.linuxmi.com/color-schemes/script/test
- /home/linuxmi/www.linuxmi.com/test
還可以指定多個(gè)目錄,并指定遞歸搜索的目錄。
- fdupes <dir1> -r <dir2>
要使fdupes計(jì)算重復(fù)文件的大小,請使用該-S選項(xiàng)。
- fdupes -S <dir>
要收集有關(guān)找到的文件的摘要信息,請使用-m選項(xiàng)。
- fdupes -m <dir>
- fdupes -m /home/linuxmi/www.linuxmi.com/
最后,如果要?jiǎng)h除所有重復(fù)項(xiàng),請使用如下所示-d的選項(xiàng)。
- fdupes -d <dir>
Fdupes將詢問要?jiǎng)h除哪些找到的文件。您將需要輸入文件號(hào):
- fdupes -d /home/linuxmi/www.linuxmi.com/
絕對不建議使用的解決方案是使用該-N選項(xiàng),該選項(xiàng)將導(dǎo)致僅保留第一個(gè)文件。
- fdupes -dN <dir>
要獲取與fdupes一起使用的可用選項(xiàng)的列表,請通過運(yùn)行查看幫助頁面。
- fdupes -help
3. dupeGuru –在Linux中查找重復(fù)文件
dupeGuru是一個(gè)開放源代碼和跨平臺(tái)的工具,可用于在Linux系統(tǒng)中查找重復(fù)文件。該工具可以掃描文件名或一個(gè)或多個(gè)文件夾中的內(nèi)容。它還允許您找到與要搜索的文件相似的文件名。
dupeGuru有適用于Windows,Mac和Linux平臺(tái)的不同版本。它的快速模糊匹配算法功能可幫助您在短時(shí)間內(nèi)找到重復(fù)的文件。它是可自定義的,您可以提取所需的確切重復(fù)文件,并從系統(tǒng)中清除不需要的文件。
要在Linux中安裝dupeGuru,請根據(jù)您的Linux發(fā)行版使用以下命令。
- ————— 在 Debian/Ubuntu/Mint 上—————
- $ sudo add-apt-repository ppa:dupeguru/ppa
- $ sudo apt-get update
- $ sudo apt-get install dupeguru
- ————— 在 Arch Linux 上—————
- $ sudo pacman -S dupeguru
Ubuntu 20.04 安裝 dupeGuru 見 http://www.linuxidc.net/thread-9837-1-1.html
4. FSlint – Linux的重復(fù)文件查找器
FSlint是一個(gè)免費(fèi)實(shí)用程序,用于查找和清除文件系統(tǒng)上各種形式的皮棉。它還報(bào)告重復(fù)文件,空目錄,臨時(shí)文件,重復(fù)/沖突(二進(jìn)制)名稱,錯(cuò)誤的符號(hào)鏈接等。它同時(shí)具有命令行和GUI模式。
要在Linux中安裝FSlint,請根據(jù)Linux發(fā)行版使用以下命令。
- $ sudo apt-get install fslint [在 Debian/Ubuntu 上]
- $ sudo yum install epel-release && $ sudo yum install fslint [在 CentOS/RHEL 上]
- $ sudo dnf install fslint [在 Fedora 22+ 上]
- $ sudo pacman -S fslint [在 Arch Linux 上]
Ubuntu 20.04 安裝 FSlint 的方法見 http://www.linuxidc.net/thread-9836-1-1.html
結(jié)論
這些是在Linux系統(tǒng)上查找重復(fù)文件的非常有用的工具,但是刪除此類文件時(shí)應(yīng)格外小心。
如果不確定是否需要文件,最好創(chuàng)建該文件的備份,并在刪除文件之前記住其目錄。如果您有任何問題或意見,請?jiān)谙旅娴脑u(píng)論部分中提交。