按文件重命名前的名称搜索文件

按文件重命名前的名称搜索文件

我有数十万个文件,这些文件都是多年来收集和存储的私人资料,例如照片、视频和文档。大多数文件都按类型、日期和主题进行组织……但有些文件(例如 10k 个文件)没有组织,大约 2 年前它们从一个目录移动到另一个目录,并被重命名了好几次。我正在寻找其中一些文件(的路径)(希望我没有意外删除它们)。

  1. 文件重命名是否会保存在任何日志或元数据中?

  2. 有没有办法使用重命名前的名称来搜索旧文件?如果可以,我该使用什么命令或工具?

我知道文件类型、大致尺寸和一些可能的名称,但仍然没有使用该find命令找到任何东西。

  1. 有没有一种方法可以在硬盘(SSD)中搜索特定路径中(可能)已删除的文件,而无需重建整个分区的文件布局表(这可能需要很长时间!?)?

答案1

  1. 文件重命名是否会保存在任何日志或元数据中?

实际上,不是。文件名是文件系统中的一条记录。在 Linux 中,文件名指向 inode,这是文件的真实唯一标识符。这样,单个文件可以存在于 Linux 文件系统中的多个位置。如果重命名文件,新名称将取代文件系统中的旧名称。

这是一种简化:现代文件系统非常复杂。例如,它们通常还有日志功能,可以暂时保留旧名称。然而,这只有几分钟的时间,肯定不是两年。

  1. 有没有办法使用重命名前的名称来搜索旧文件?如果可以,我该使用什么命令或工具?

因为 1,不。重命名的文件名将被覆盖。

  1. 有没有一种方法可以在硬盘(SSD)中搜索特定路径中(可能)已删除的文件,而无需重建整个分区的文件布局表(这可能需要很长时间!?)?

您现在处于数据恢复领域。由于其工作方式,在现代 Linux 文件系统中恢复数据相当困难。有一个工具photorec(及其附带工具testdisk)可以恢复已删除的文件 -photorec但是,它不基于文件名工作,而是会雕刻数字数据,当它识别出类似于已知文件格式的数字数据时恢复块。

从实际角度而言,移动数据(尤其是删除数据)是不可逆的过程。防止意外或错误文件操作的唯一预防措施是维护备份,对于您而言,最好进行版本控制(即保留非常旧的版本)。

答案2

正如@vanadium 所说,没有办法完全实现你的愿望。

我能想到的唯一与此类似的事情是,如果您有(部分)文件的旧副本。然后,您可以从该文件的目录执行 rsync 到系统的其余部分,指定(两次--fuzzy --fuzzy)并--dry-run让 rsync 查找可能在不同目录中具有不同名称的相同文件,并只告诉您它将要做什么,而无需实际将任何内容写入当前系统。

如果文件不是二进制文件(例如文本或文档),您可以使用 recoll 等工具来索引和搜索当前系统。它可以轻松执行简单搜索,但也有高级查询来更精确地搜索。它确实需要一段时间,并且在您首次运行时会构建一个相当大的数据库。它的目标文件类型是“媒体”,但我从未明确尝试使用它。

grep 还会为您搜索非二进制文件中的特定内容,但它每次都会搜索您指定的路径中的所有内容,因此如果您要查找很多内容,那么让 recoll 构建和搜索索引可能是值得的 - 将来在进行其他搜索时可能会很方便。我并不经常使用它,但当我使用它时,它就是救命稻草。

相关内容