Linux fdupes:删除目录中的重复文件

时间:2020-01-09 10:42:15  来源:igfitidea点击:

如何在给定的目录集中找到重复的文件并使用Shell脚本或者命令行选项将其删除?如何清除Linux操作系统上~/foo和/u2/foo目录中存储的重复文件?如何在基于Linux的服务器上删除重复文件?您需要使用一个名为fdupes的工具。它将在给定的路径中搜索重复的文件。通过比较文件大小和MD5签名,然后进行逐字节比较,可以找到此类文件。 fdupes是消除重复文件的好工具。

另一种选择是使用一种称为的工具来查找和修复文件存储中的常见错误,例如重复文件。

在Linux上安装fdupes

在Debian/Ubuntu Linux上执行以下apt-get命令:

# apt-get install fdupes

在Redhat/RHEL/Fedota/CentOS Linux下执行以下yum命令,输入(运行以下yum命令之前打开rpmforge repo):

# yum install fdupes

如何使用fdupes命令?

要在/etc /目录中找到重复的文件,请执行:

# fdupes /etc

输出示例:

/etc/vimrc                              
/etc/virc

如何删除不需要的文件?

您可以强制fdupes提示您保存文件,删除所有其他文件(请谨慎使用,否则可能会丢失数据):

# fdupes -d /etc

输出示例:

[1] /etc/vimrc                          
[2] /etc/virc

Set 1 of 1, preserve files [1 - 2, all]: 1

   [+] /etc/vimrc
   [-] /etc/virc

如何递归搜索目录?

您可以递归搜索每个目录,并在-r选项中遇到以下子目录后执行:

# fdupes -r /dir1

如何在两个目录中找到重复对象?

执行命令,如下所示:

# fdupes  /dir1 /dir2

或者

# fdupes -r /etc /data/etc /nas95/etc

如何查看重复文件的大小?

使用-S选项执行以下命令:

# fdupes -S /etc

输出示例:

1533 bytes each:                        
/etc/vimrc
/etc/virc

使用fslint删除重复的文件

fslint是用于查找文件系统各种问题的命令,包括重复文件和有问题的文件名等。
这是台式机用户的推荐工具。
要安装,请在Debian/Ubuntu Linux上执行以下内容:

$ sudo apt-get install fslint

除了GUI之外,还可以使用单独的命令行工具来访问它们,可以在标准安装中将/usr/share/fslint/fslint目录更改为$/usr/share/fslint/fslint目录,或者将其添加到$PATH中。
该目录中的每个命令都有一个--help选项,进一步详细说明了其参数:

$ ls /usr/share/fslint/fslint/

输出示例:

findbl  findid  findns  findsn  findu8  findup  fstool  zipdir
finded  findnl  findrs  findtf  findul  fslint  supprt

其中:

  • findup查找DUPlicate文件
  • findnl查找名称Lint(文件名问题)
  • findu8查找无效utf8编码的文件名
  • findbl查找错误链接(符号链接的各种问题)
  • findsn查找相同名称(名称冲突的问题)
  • finded找到空目录
  • findid查找具有无效用户ID的文件
  • findns查找未剥离的可执行文件
  • findrs在文件中找到冗余空格
  • findtf查找临时文件
  • findul查找可能未使用的库
  • zipdir回收ext2目录条目中浪费的空间

例子

要在当前目录及以下目录中搜索重复项,请执行:

##  Set path first ##
export PATH=$PATH:/usr/share/fslint/fslint/
findup 
findup .

要在所有/nas01/theitroad.local/projects源目录中搜索重复项并使用硬链接进行合并,请执行:

findup -m /nas01/theitroad.local/projects*

在系统中搜索大小超过20K的重复文件

sudo findup / -size +20k

仅搜索我的文件(我拥有并在主目录中)

findup ~ -user $(id -u)

要在系统中搜索属于tom用户的重复文件:

sudo findup / -user $(id -u tom)

fslint-gui工具

fslint-gui是单个fslint命令行工具的GUI包装:

fslint-gui &