对于大多数计算机用户来说,找到和替换重复文件是常见的要求。 查找和删除重复文件是一项繁琐的工作,需要时间和耐心。 如果你的机器是由GNU / Linux的,多亏供电,以“fdupes”工具查找重复文件,可以很容易的。
Fdupes - 在Linux中查找和删除重复的文件
什么是fdupes?
Fdupes是一个Linux工具阿德里安-洛佩斯在MIT许可发行的C编程语言编写的。 应用程序能够找到给定的目录和子目录集中的重复文件。 Fdupes通过比较文件的MD5签名,然后进行字节到字节的比较来识别重复。 Fdupes可以传递许多选项来列出,删除和替换硬链接到重复的文件。
比较按顺序开始:
大小比较 > 部分MD5签名比较 > 全MD5签名比较 > 字节到字节的比较 。
在Linux上安装fdupes
下面就基于Debian的系统,如Ubuntu和Linux Mint的命令fdupes的最新版本(版本fdupes 1.51)那么容易,因为正在运行的安装。
$ sudo apt-get install fdupes
在CentOS / RHEL和Fedora的系统,你需要打开EPEL软件库安装fdupes包。
# yum install fdupes # dnf install fdupes [On Fedora 22 onwards]
注意 :默认的包管理的yum是由DNF在Fedora 22日起取代...
如何使用fdupes命令?
1.出于演示的目的,让我们一个一个目录下创建几个重复的文件(比如说youcl)简称为:
$ mkdir /home/"$USER"/Desktop/youcl && cd /home/"$USER"/Desktop/youcl && for i in {1..15}; do echo "I Love youcl. youcl is a very nice community of Linux Users." > youcl${i}.txt ; done
上面的命令运行后,让我们来验证使用创建文件的副本或者不ls命令 。
$ ls -l total 60 -rw-r--r-- 1 youcl youcl 65 Aug 8 11:22 youcl10.txt -rw-r--r-- 1 youcl youcl 65 Aug 8 11:22 youcl11.txt -rw-r--r-- 1 youcl youcl 65 Aug 8 11:22 youcl12.txt -rw-r--r-- 1 youcl youcl 65 Aug 8 11:22 youcl13.txt -rw-r--r-- 1 youcl youcl 65 Aug 8 11:22 youcl14.txt -rw-r--r-- 1 youcl youcl 65 Aug 8 11:22 youcl15.txt -rw-r--r-- 1 youcl youcl 65 Aug 8 11:22 youcl1.txt -rw-r--r-- 1 youcl youcl 65 Aug 8 11:22 youcl2.txt -rw-r--r-- 1 youcl youcl 65 Aug 8 11:22 youcl3.txt -rw-r--r-- 1 youcl youcl 65 Aug 8 11:22 youcl4.txt -rw-r--r-- 1 youcl youcl 65 Aug 8 11:22 youcl5.txt -rw-r--r-- 1 youcl youcl 65 Aug 8 11:22 youcl6.txt -rw-r--r-- 1 youcl youcl 65 Aug 8 11:22 youcl7.txt -rw-r--r-- 1 youcl youcl 65 Aug 8 11:22 youcl8.txt -rw-r--r-- 1 youcl youcl 65 Aug 8 11:22 youcl9.txt
上面的脚本创建15个文件,即youcl1.txt,youcl2.txt ... youcl15.txt和每一个文件包含相同的数据,即,
"I Love youcl. youcl is a very nice community of Linux Users."
2.现在搜索文件夹内youcl重复的文件。
$ fdupes /home/$USER/Desktop/youcl /home/youcl/Desktop/youcl/youcl13.txt /home/youcl/Desktop/youcl/youcl8.txt /home/youcl/Desktop/youcl/youcl11.txt /home/youcl/Desktop/youcl/youcl3.txt /home/youcl/Desktop/youcl/youcl4.txt /home/youcl/Desktop/youcl/youcl6.txt /home/youcl/Desktop/youcl/youcl7.txt /home/youcl/Desktop/youcl/youcl9.txt /home/youcl/Desktop/youcl/youcl10.txt /home/youcl/Desktop/youcl/youcl2.txt /home/youcl/Desktop/youcl/youcl5.txt /home/youcl/Desktop/youcl/youcl14.txt /home/youcl/Desktop/youcl/youcl1.txt /home/youcl/Desktop/youcl/youcl15.txt /home/youcl/Desktop/youcl/youcl12.txt
3.搜索重复递归每个目录下包括它的使用-r选项子目录。
它将递归搜索所有文件和文件夹,这取决于文件和文件夹的数量,它需要一些时间来扫描重复。 在这个时候,你将被呈现在终端的总进展,像这样。
$ fdupes -r /home Progress [37780/54747] 69%
4.请参见使用-s选项文件夹中找到重复的大小。
$ fdupes -S /home/$USER/Desktop/youcl 65 bytes each: /home/youcl/Desktop/youcl/youcl13.txt /home/youcl/Desktop/youcl/youcl8.txt /home/youcl/Desktop/youcl/youcl11.txt /home/youcl/Desktop/youcl/youcl3.txt /home/youcl/Desktop/youcl/youcl4.txt /home/youcl/Desktop/youcl/youcl6.txt /home/youcl/Desktop/youcl/youcl7.txt /home/youcl/Desktop/youcl/youcl9.txt /home/youcl/Desktop/youcl/youcl10.txt /home/youcl/Desktop/youcl/youcl2.txt /home/youcl/Desktop/youcl/youcl5.txt /home/youcl/Desktop/youcl/youcl14.txt /home/youcl/Desktop/youcl/youcl1.txt /home/youcl/Desktop/youcl/youcl15.txt /home/youcl/Desktop/youcl/youcl12.txt
5.您可以看到的范围内对使用-S和-r选项的同时,由于遇到的每一个目录和子目录重复的文件大小:
$ fdupes -Sr /home/avi/Desktop/ 65 bytes each: /home/youcl/Desktop/youcl/youcl13.txt /home/youcl/Desktop/youcl/youcl8.txt /home/youcl/Desktop/youcl/youcl11.txt /home/youcl/Desktop/youcl/youcl3.txt /home/youcl/Desktop/youcl/youcl4.txt /home/youcl/Desktop/youcl/youcl6.txt /home/youcl/Desktop/youcl/youcl7.txt /home/youcl/Desktop/youcl/youcl9.txt /home/youcl/Desktop/youcl/youcl10.txt /home/youcl/Desktop/youcl/youcl2.txt /home/youcl/Desktop/youcl/youcl5.txt /home/youcl/Desktop/youcl/youcl14.txt /home/youcl/Desktop/youcl/youcl1.txt /home/youcl/Desktop/youcl/youcl15.txt /home/youcl/Desktop/youcl/youcl12.txt 107 bytes each: /home/youcl/Desktop/resume_files/r-csc.html /home/youcl/Desktop/resume_files/fc.html
6.除了一个文件夹中递归搜索或所有文件夹,您可以选择根据需要在两个文件夹或三个文件夹选择。 更何况,你可以使用选项-S和/或如果需要-r选项 。
$ fdupes /home/avi/Desktop/ /home/avi/Templates/
7.要删除重复的文件,同时保留一个副本,你可以使用选项“-d”。 在使用此选项时应格外小心,否则可能会导致丢失必要的文件/数据,并认为该过程是不可恢复的。
$ fdupes -d /home/$USER/Desktop/youcl [1] /home/youcl/Desktop/youcl/youcl13.txt [2] /home/youcl/Desktop/youcl/youcl8.txt [3] /home/youcl/Desktop/youcl/youcl11.txt [4] /home/youcl/Desktop/youcl/youcl3.txt [5] /home/youcl/Desktop/youcl/youcl4.txt [6] /home/youcl/Desktop/youcl/youcl6.txt [7] /home/youcl/Desktop/youcl/youcl7.txt [8] /home/youcl/Desktop/youcl/youcl9.txt [9] /home/youcl/Desktop/youcl/youcl10.txt [10] /home/youcl/Desktop/youcl/youcl2.txt [11] /home/youcl/Desktop/youcl/youcl5.txt [12] /home/youcl/Desktop/youcl/youcl14.txt [13] /home/youcl/Desktop/youcl/youcl1.txt [14] /home/youcl/Desktop/youcl/youcl15.txt [15] /home/youcl/Desktop/youcl/youcl12.txt Set 1 of 1, preserve files [1 - 15, all]:
您可能会注意到,所有重复的列表都会列出,并提示您删除,一个或一个范围或一次全部。 您可以选择类似下面的范围删除特定范围的文件文件。
Set 1 of 1, preserve files [1 - 15, all]: 2-15 [-] /home/youcl/Desktop/youcl/youcl13.txt [+] /home/youcl/Desktop/youcl/youcl8.txt [-] /home/youcl/Desktop/youcl/youcl11.txt [-] /home/youcl/Desktop/youcl/youcl3.txt [-] /home/youcl/Desktop/youcl/youcl4.txt [-] /home/youcl/Desktop/youcl/youcl6.txt [-] /home/youcl/Desktop/youcl/youcl7.txt [-] /home/youcl/Desktop/youcl/youcl9.txt [-] /home/youcl/Desktop/youcl/youcl10.txt [-] /home/youcl/Desktop/youcl/youcl2.txt [-] /home/youcl/Desktop/youcl/youcl5.txt [-] /home/youcl/Desktop/youcl/youcl14.txt [-] /home/youcl/Desktop/youcl/youcl1.txt [-] /home/youcl/Desktop/youcl/youcl15.txt [-] /home/youcl/Desktop/youcl/youcl12.txt
8.从安全的角度,你可能会想打印“fdupes”以文件的输出,然后检查文本文件,以决定删除哪个文件。 这减少了获取您的文件意外删除的机会。 您可以:
$ fdupes -Sr /home > /home/fdupes.txt
注意 :您可能取代'/家“与您所需的文件夹。 还可以使用选项'-r'和'-S'如果你想分别递归搜索和打印尺寸。
9.您可以省略从每一组通过选择匹配的第一个文件“-f”。
First列出目录的文件。
$ ls -l /home/$USER/Desktop/youcl total 20 -rw-r--r-- 1 youcl youcl 65 Aug 8 11:22 youcl9 (3rd copy).txt -rw-r--r-- 1 youcl youcl 65 Aug 8 11:22 youcl9 (4th copy).txt -rw-r--r-- 1 youcl youcl 65 Aug 8 11:22 youcl9 (another copy).txt -rw-r--r-- 1 youcl youcl 65 Aug 8 11:22 youcl9 (copy).txt -rw-r--r-- 1 youcl youcl 65 Aug 8 11:22 youcl9.txt
然后从每组匹配中省略第一个文件。
$ fdupes -f /home/$USER/Desktop/youcl /home/youcl/Desktop/youcl9 (copy).txt /home/youcl/Desktop/youcl9 (3rd copy).txt /home/youcl/Desktop/youcl9 (another copy).txt /home/youcl/Desktop/youcl9 (4th copy).txt
10.检查安装fdupes版本。
$ fdupes --version fdupes 1.51
11.如果您需要fdupes你可以使用开关“-h”任何帮助。
$ fdupes -h Usage: fdupes [options] DIRECTORY... -r --recurse for every directory given follow subdirectories encountered within -R --recurse: for each directory given after this option follow subdirectories encountered within (note the ':' at the end of the option, manpage for more details) -s --symlinks follow symlinks -H --hardlinks normally, when two or more files point to the same disk area they are treated as non-duplicates; this option will change this behavior -n --noempty exclude zero-length files from consideration -A --nohidden exclude hidden files from consideration -f --omitfirst omit the first file in each set of matches -1 --sameline list each set of matches on a single line -S --size show size of duplicate files -m --summarize summarize dupe information -q --quiet hide progress indicator -d --delete prompt user for files to preserve and delete all others; important: under particular circumstances, data may be lost when using this option together with -s or --symlinks, or when specifying a particular directory more than once; refer to the fdupes documentation for additional information -N --noprompt together with --delete, preserve the first file in each set of duplicates and delete the rest without prompting the user -v --version display fdupes version -h --help display this help message
这是所有现在。 让我知道你是如何找到和删除重复文件到现在为止在Linux? 并告诉我你对这个实用程序的意见。 在下面的评论部分提出宝贵的反馈,不要忘记喜欢/分享我们,并帮助我们传播。
我在另一个工具称为工作fslint删除重复的文件 ,不久将发布,你的人会喜欢阅读。