返回
揭秘Linux:无需硬链接识别相同内容文件
见解分享
2023-09-01 19:01:07
写在前面
在Linux系统中,硬链接(也称硬连接)的文件是指指向相同硬盘内容并共享inode的文件,这一特性使得文件能存放在文件系统内的多个地方,却不会占用额外的硬盘空间。
但除此之外,有时文件副本相当于对硬盘空间的一再占用。因此,本文将着眼于揭秘那些即便没有建立硬链接,却拥有相同内容的文件。
应用实例
为了一探究竟,我们首先需要一个文件,它将是其他所有文件的“内容之源”。您可以创建一个包含任何内容的文本文档,比如简单几行文字或一长串数字,之后只需用文本编辑器保存即可。
- 使用touch命令创建一个空文件:
touch original_file.txt
- 输入以下内容:
This is the original file.
- 另存为original_file.txt
为了更清晰地观察不同内容的文件,我们将创建两个新的文件:
touch copy1.txt
touch copy2.txt
接下来,我们将通过以下命令将“内容之源”复制到这两个文件:
cp original_file.txt copy1.txt
cp original_file.txt copy2.txt
现在,我们将为copy2.txt创建一个副本并对其进行修改:
cp copy2.txt modified_copy.txt
echo "Modified content" >> modified_copy.txt
如果我们比较original_file.txt、copy1.txt和modified_copy.txt,就会发现内容分别为:
This is the original file.
This is the original file.
This is the original file.
Modified content
由此可见,copy1.txt的内容与original_file.txt完全相同,而modified_copy.txt则在此基础上添加了新的内容。
揭秘技巧
在Linux中,可以通过diff命令轻松找出相同内容的文件:
diff original_file.txt copy1.txt
如果两个文件的内容完全相同,diff将不会输出任何结果。
另一种方法是使用find命令:
find / -type f -exec md5sum {} \; | sort | uniq -w32 -z | awk '{print $2}' | xargs -0 md5sum
该命令将对系统中所有文件进行md5校验和,并将结果按照md5值排序,相同md5值的文件将被分到一组。
扩展探索
您可以在学习了基础知识后,进一步探索这些主题:
- 如何在不同的文件系统中找到具有相同内容的文件
- 如何自动检测并删除具有相同内容的文件
- 如何使用md5sum和diff等命令分析文件内容
总结回顾
希望本文能够帮助您更好地理解如何在Linux系统中识别具有相同内容的文件,无论它们是否通过硬链接连接。