Files
查找重複文件
是否可以在我的磁碟上找到相同但文件名不同的重複文件?
fdupes
可以做到這一點。來自man fdupes
:在給定路徑中搜尋重複文件。通過比較文件大小和 MD5 簽名,然後逐字節比較來找到此類文件。
在 Debian 或 Ubuntu 中,您可以使用
apt-get install fdupes
. 在 Fedora/Red Hat/CentOS 中,您可以使用yum install fdupes
. 在 Arch Linux 上你可以使用pacman -S fdupes
.,在 Gentoo 上,emerge fdupes
.要從文件系統根目錄執行檢查,這可能會花費大量時間和記憶體,請使用類似
fdupes -r /
.如評論中所述,您可以通過執行以下操作獲得最大的重複項:
fdupes -r . | { while IFS= read -r file; do [[ $file ]] && du "$file" done } | sort -n
如果您的文件名包含換行符,這將中斷。
另一個好工具是
fslint
:fslint 是一個工具集,用於查找文件系統的各種問題,包括重複文件和有問題的文件名等。
除了 GUI 之外,還提供了單獨的命令行工具,要訪問它們,可以在標準安裝中更改或添加到 $PATH 的 /usr/share/fslint/fslint 目錄。該目錄中的每個命令都有一個 –help 選項,該選項進一步詳細說明了它的參數。
findup - find DUPlicate files
在基於 debian 的系統上,您可以使用以下命令安裝它:
sudo apt-get install fslint
如果您不想或無法安裝第三方工具,也可以手動執行此操作。大多數此類程序的工作方式是計算文件校驗和。具有相同 md5sum 的文件幾乎肯定包含完全相同的數據。所以,你可以這樣做:
find / -type f -exec md5sum {} \; > md5sums awk '{print $1}' md5sums | sort | uniq -d > dupes while read -r d; do echo "---"; grep -- "$d" md5sums | cut -d ' ' -f 2-; done < dupes
範例輸出(此範例中的文件名相同,但不同時也可以使用):
$ while read -r d; do echo "---"; grep -- "$d" md5sums | cut -d ' ' -f 2-; done < dupes --- /usr/src/linux-headers-3.2.0-3-common/include/linux/if_bonding.h /usr/src/linux-headers-3.2.0-4-common/include/linux/if_bonding.h --- /usr/src/linux-headers-3.2.0-3-common/include/linux/route.h /usr/src/linux-headers-3.2.0-4-common/include/linux/route.h --- /usr/src/linux-headers-3.2.0-3-common/include/drm/Kbuild /usr/src/linux-headers-3.2.0-4-common/include/drm/Kbuild ---
這將比已經提到的專用工具慢得多,但它會起作用 。