如何在Unix系统中查找重复文件?
引言
随着我们越来越依赖数字媒体来存储重要文件,我们往往会随着时间的推移积累大量文件。管理这些文件可能具有挑战性,尤其是在我们拥有多个相同文件的副本时,这些副本会占用存储空间。为了解决这个问题,Unix提供了几种查找和删除重复文件的方法,从而节省我们的时间和磁盘空间。
在本文中,我们将探讨在Unix中查找重复文件的各种方法,并演示可用于每种方法的终端命令。通过这些不同的方法,我们可以根据需要管理的数据类型和数量,选择最适合我们需求和偏好的方法。
使用fdupes查找重复文件
这是一个终端工具,允许我们递归地在目录树中查找重复文件。该工具在大多数类Unix系统上可用。
打开终端窗口并导航到要扫描重复文件的目录:
$ cd Desktop/duplicate
然后,键入命令运行fdupes并查找重复文件:
fdupes -r .
-r选项告诉fdupes反复扫描当前目录及其子目录。“.”将当前目录定义为搜索的起点。运行命令后,fdupes将查看目录树中的所有文件,并返回相同文件的列表。
./folder2/hello.txt ./folder1/hello.txt ./folder3/hello.txt
使用jdupes查找重复文件
这是一个命令行工具,用于识别和管理重复文件。它根据名称、大小、修改时间和内容等各种标准比较文件,即使文件名称不同或位于不同的目录中,也能识别重复文件。jdupes是fdupes工具的更高级版本。
要在终端中使用它,请键入以下命令:
$ jdupes -r .
这里,-r选项指示jdupes扫描当前目录及其子目录。“.”在本例中由“.”大小定义为起点。运行命令后,它将扫描目录中的所有文件,只打印相同的文件。
Scanning: 9 files, 4 items (in 1 specified) ** scanning files ** ./folder1/hello.txt ./folder2/hello.txt ./folder3/hello.txt
使用Awk工具查找重复文件
名为“awk”的实用程序是一个非常强大的工具,可以查找相同的文件。我们可以用它快速扫描目录结构,查找具有相似名称的文件,并显示它们及其路径。
$ awk -F'/' '{ f = $NF arr[f] = f in arr? arr[f] RS $0 : $0 bb[f]++ } END{for(x in bb) if(bb[x]>1) printf "Name of duplicate files: %s
% s
", x,arr[x] }'<(find . -type f)
此脚本使用正斜杠作为分隔符扫描每个文件路径,使用$NF获取文件名,并测试它是否存在于“arr”中。如果存在,则添加路径,“bb”集合计算每个文件名出现的次数。
Name of duplicate files: unique.txt ./folder2/unique.txt ./folder1/unique.txt ./folder3/unique.txt Name of duplicate files: hello.txt ./folder2/hello.txt ./folder1/hello.txt ./folder3/hello.txt
使用Awk按大小查找重复文件
我们还可以使用此awk实用程序查找大小相同的文件,因为重复文件的大小相同。
$ awk '{ fsize = $1 fpath[fsize] = fsize in fpath ? fpath[fsize] RS $2 : $2 count[fsize]++ } END{for(size in count) if(count[size]>1) printf "Using the awk to find Duplicate files by size: %d bytes
%s
",size,fpath[size] }' <(find . -type f -exec du -b {} +)
这将获取每个文件的大小并将其保存在“fsize”变量中。如果此大小已出现在“fpath”数组中,它会将当前文件路径附加到现有路径集合中。count数组记录每个文件大小出现的次数。最后的命令循环遍历count数组并打印相同文件的名称。
Using the awk to find Duplicate files by size: 13 bytes ./folder2/unique.txt ./folder3/unique.txt ** many more duplicate files** Using the awk to find Duplicate files by size: 20 bytes ./folder2/hello.txt ./folder1/hello.txt ./folder3/hello.txt
结论
从本文中,我们了解到Unix操作系统提供了多种有效的方法来查找和删除重复文件,例如使用fdupes、jdupes、awk和find命令等命令行工具。通过使用这些方法,我们可以有效地管理我们的文件并节省宝贵的磁盘空间。