fdupes - 在Linux中查找和删除重复文件的Comamndline工具

fdupes是一个Linux实用程序,用于识别或删除给定的目录和子目录集中的重复文件。它通过比较识别重复

对于大多数计算机用户来说,找到和替换重复文件是常见的要求。 查找和删除重复文件是一项繁琐的工作,需要时间和耐心。 如果你的机器是由GNU / Linux的,多亏供电,以“fdupes”工具查找重复文件,可以很容易的。

在Linux中查找和删除重复的文件

Fdupes - 在Linux中查找和删除重复的文件

什么是fdupes?

Fdupes是一个Linux工具阿德里安-洛佩斯在MIT许可发行的C编程语言编写的。 应用程序能够找到给定的目录和子目录集中的重复文件。 Fdupes通过比较文件的MD5签名,然后进行字节到字节的比较来识别重复。 Fdupes可以传递许多选项来列出,删除和替换硬链接到重复的文件。

比较按顺序开始:

大小比较 > 部分MD5签名比较 > 全MD5签名比较 > 字节到字节的比较

在Linux上安装fdupes

下面就基于Debian的系统,如UbuntuLinux Mint的命令fdupes的最新版本(版本fdupes 1.51)那么容易,因为正在运行的安装。

$ sudo apt-get install fdupes

CentOS / RHELFedora的系统,你需要打开EPEL软件库安装fdupes包。

# yum install fdupes
# dnf install fdupes    [On Fedora 22 onwards]

注意 :默认包管理的yum是由DNFFedora 22日起取代...

如何使用fdupes命令?

1.出于演示的目的,让我们一个一个目录下创建几个重复的文件(比如说howtoing)简称为:

$ mkdir /home/"$USER"/Desktop/howtoing && cd /home/"$USER"/Desktop/howtoing && for i in {1..15}; do echo "I Love Howtoing. Howtoing is a very nice community of Linux Users." > howtoing${i}.txt ; done

上面的命令运行后,让我们来验证使用创建文件的副本或者不ls命令

$ ls -l
total 60
-rw-r--r-- 1 howtoing howtoing 65 Aug  8 11:22 howtoing10.txt
-rw-r--r-- 1 howtoing howtoing 65 Aug  8 11:22 howtoing11.txt
-rw-r--r-- 1 howtoing howtoing 65 Aug  8 11:22 howtoing12.txt
-rw-r--r-- 1 howtoing howtoing 65 Aug  8 11:22 howtoing13.txt
-rw-r--r-- 1 howtoing howtoing 65 Aug  8 11:22 howtoing14.txt
-rw-r--r-- 1 howtoing howtoing 65 Aug  8 11:22 howtoing15.txt
-rw-r--r-- 1 howtoing howtoing 65 Aug  8 11:22 howtoing1.txt
-rw-r--r-- 1 howtoing howtoing 65 Aug  8 11:22 howtoing2.txt
-rw-r--r-- 1 howtoing howtoing 65 Aug  8 11:22 howtoing3.txt
-rw-r--r-- 1 howtoing howtoing 65 Aug  8 11:22 howtoing4.txt
-rw-r--r-- 1 howtoing howtoing 65 Aug  8 11:22 howtoing5.txt
-rw-r--r-- 1 howtoing howtoing 65 Aug  8 11:22 howtoing6.txt
-rw-r--r-- 1 howtoing howtoing 65 Aug  8 11:22 howtoing7.txt
-rw-r--r-- 1 howtoing howtoing 65 Aug  8 11:22 howtoing8.txt
-rw-r--r-- 1 howtoing howtoing 65 Aug  8 11:22 howtoing9.txt

上面的脚本创建15个文件,即howtoing1.txt,howtoing2.txt ... howtoing15.txt和每一个文件包含相同的数据,即,

"I Love Howtoing. Howtoing is a very nice community of Linux Users."

2.现在搜索文件夹内howtoing重复的文件。

$ fdupes /home/$USER/Desktop/howtoing 
/home/howtoing/Desktop/howtoing/howtoing13.txt
/home/howtoing/Desktop/howtoing/howtoing8.txt
/home/howtoing/Desktop/howtoing/howtoing11.txt
/home/howtoing/Desktop/howtoing/howtoing3.txt
/home/howtoing/Desktop/howtoing/howtoing4.txt
/home/howtoing/Desktop/howtoing/howtoing6.txt
/home/howtoing/Desktop/howtoing/howtoing7.txt
/home/howtoing/Desktop/howtoing/howtoing9.txt
/home/howtoing/Desktop/howtoing/howtoing10.txt
/home/howtoing/Desktop/howtoing/howtoing2.txt
/home/howtoing/Desktop/howtoing/howtoing5.txt
/home/howtoing/Desktop/howtoing/howtoing14.txt
/home/howtoing/Desktop/howtoing/howtoing1.txt
/home/howtoing/Desktop/howtoing/howtoing15.txt
/home/howtoing/Desktop/howtoing/howtoing12.txt

3.搜索重复递归每个目录下包括它的使用-r选项子目录。

它将递归搜索所有文件和文件夹,这取决于文件和文件夹的数量,它需要一些时间来扫描重复。 在这个时候,你将被呈现在终端的总进展,像这样。

$ fdupes -r /home
Progress [37780/54747] 69%

4.请参见使用-s选项文件夹中找到重复的大小。

$ fdupes -S /home/$USER/Desktop/howtoing
65 bytes each:                          
/home/howtoing/Desktop/howtoing/howtoing13.txt
/home/howtoing/Desktop/howtoing/howtoing8.txt
/home/howtoing/Desktop/howtoing/howtoing11.txt
/home/howtoing/Desktop/howtoing/howtoing3.txt
/home/howtoing/Desktop/howtoing/howtoing4.txt
/home/howtoing/Desktop/howtoing/howtoing6.txt
/home/howtoing/Desktop/howtoing/howtoing7.txt
/home/howtoing/Desktop/howtoing/howtoing9.txt
/home/howtoing/Desktop/howtoing/howtoing10.txt
/home/howtoing/Desktop/howtoing/howtoing2.txt
/home/howtoing/Desktop/howtoing/howtoing5.txt
/home/howtoing/Desktop/howtoing/howtoing14.txt
/home/howtoing/Desktop/howtoing/howtoing1.txt
/home/howtoing/Desktop/howtoing/howtoing15.txt
/home/howtoing/Desktop/howtoing/howtoing12.txt

5.您可以看到的范围内对使用-S-r选项的同时,由于遇到的每一个目录和子目录重复的文件大小:

$ fdupes -Sr /home/avi/Desktop/
65 bytes each:                          
/home/howtoing/Desktop/howtoing/howtoing13.txt
/home/howtoing/Desktop/howtoing/howtoing8.txt
/home/howtoing/Desktop/howtoing/howtoing11.txt
/home/howtoing/Desktop/howtoing/howtoing3.txt
/home/howtoing/Desktop/howtoing/howtoing4.txt
/home/howtoing/Desktop/howtoing/howtoing6.txt
/home/howtoing/Desktop/howtoing/howtoing7.txt
/home/howtoing/Desktop/howtoing/howtoing9.txt
/home/howtoing/Desktop/howtoing/howtoing10.txt
/home/howtoing/Desktop/howtoing/howtoing2.txt
/home/howtoing/Desktop/howtoing/howtoing5.txt
/home/howtoing/Desktop/howtoing/howtoing14.txt
/home/howtoing/Desktop/howtoing/howtoing1.txt
/home/howtoing/Desktop/howtoing/howtoing15.txt
/home/howtoing/Desktop/howtoing/howtoing12.txt
107 bytes each:
/home/howtoing/Desktop/resume_files/r-csc.html
/home/howtoing/Desktop/resume_files/fc.html

6.除了一个文件夹中递归搜索或所有文件夹,您可以选择根据需要在两个文件夹或三个文件夹选择。 更何况,你可以使用选项-S和/或如果需要-r选项

$ fdupes /home/avi/Desktop/ /home/avi/Templates/

7.要删除重复的文件,同时保留一个副本,你可以使用选项“-d”。 在使用此选项时应格外小心,否则可能会导致丢失必要的文件/数据,并认为该过程是不可恢复的。

$ fdupes -d /home/$USER/Desktop/howtoing
[1] /home/howtoing/Desktop/howtoing/howtoing13.txt
[2] /home/howtoing/Desktop/howtoing/howtoing8.txt
[3] /home/howtoing/Desktop/howtoing/howtoing11.txt
[4] /home/howtoing/Desktop/howtoing/howtoing3.txt
[5] /home/howtoing/Desktop/howtoing/howtoing4.txt
[6] /home/howtoing/Desktop/howtoing/howtoing6.txt
[7] /home/howtoing/Desktop/howtoing/howtoing7.txt
[8] /home/howtoing/Desktop/howtoing/howtoing9.txt
[9] /home/howtoing/Desktop/howtoing/howtoing10.txt
[10] /home/howtoing/Desktop/howtoing/howtoing2.txt
[11] /home/howtoing/Desktop/howtoing/howtoing5.txt
[12] /home/howtoing/Desktop/howtoing/howtoing14.txt
[13] /home/howtoing/Desktop/howtoing/howtoing1.txt
[14] /home/howtoing/Desktop/howtoing/howtoing15.txt
[15] /home/howtoing/Desktop/howtoing/howtoing12.txt
Set 1 of 1, preserve files [1 - 15, all]: 

您可能会注意到,所有重复的列表都会列出,并提示您删除,一个或一个范围或一次全部。 您可以选择类似下面的范围删除特定范围的文件文件。

Set 1 of 1, preserve files [1 - 15, all]: 2-15
[-] /home/howtoing/Desktop/howtoing/howtoing13.txt
[+] /home/howtoing/Desktop/howtoing/howtoing8.txt
[-] /home/howtoing/Desktop/howtoing/howtoing11.txt
[-] /home/howtoing/Desktop/howtoing/howtoing3.txt
[-] /home/howtoing/Desktop/howtoing/howtoing4.txt
[-] /home/howtoing/Desktop/howtoing/howtoing6.txt
[-] /home/howtoing/Desktop/howtoing/howtoing7.txt
[-] /home/howtoing/Desktop/howtoing/howtoing9.txt
[-] /home/howtoing/Desktop/howtoing/howtoing10.txt
[-] /home/howtoing/Desktop/howtoing/howtoing2.txt
[-] /home/howtoing/Desktop/howtoing/howtoing5.txt
[-] /home/howtoing/Desktop/howtoing/howtoing14.txt
[-] /home/howtoing/Desktop/howtoing/howtoing1.txt
[-] /home/howtoing/Desktop/howtoing/howtoing15.txt
[-] /home/howtoing/Desktop/howtoing/howtoing12.txt

8.从安全的角度,你可能会想打印“fdupes”以文件的输出,然后检查文本文件,以决定删除哪个文件。 这减少了获取您的文件意外删除的机会。 您可以:

$ fdupes -Sr /home > /home/fdupes.txt

注意 :您可能取代'/家“与您所需的文件夹。 还可以使用选项'-r''-S'如果你想分别递归搜索和打印尺寸。

9.您可以省略从每一组通过选择匹配的第一个文件“-f”。

First列出目录的文件。

$ ls -l /home/$USER/Desktop/howtoing
total 20
-rw-r--r-- 1 howtoing howtoing 65 Aug  8 11:22 howtoing9 (3rd copy).txt
-rw-r--r-- 1 howtoing howtoing 65 Aug  8 11:22 howtoing9 (4th copy).txt
-rw-r--r-- 1 howtoing howtoing 65 Aug  8 11:22 howtoing9 (another copy).txt
-rw-r--r-- 1 howtoing howtoing 65 Aug  8 11:22 howtoing9 (copy).txt
-rw-r--r-- 1 howtoing howtoing 65 Aug  8 11:22 howtoing9.txt

然后从每组匹配中省略第一个文件。

$ fdupes -f /home/$USER/Desktop/howtoing
/home/howtoing/Desktop/howtoing9 (copy).txt
/home/howtoing/Desktop/howtoing9 (3rd copy).txt
/home/howtoing/Desktop/howtoing9 (another copy).txt
/home/howtoing/Desktop/howtoing9 (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删除重复的文件 ,不久将发布,你的人会喜欢阅读。