尚不清楚您想要哪种搜索。如果您希望它可以在Unix中的任何地方工作,而不仅仅是您的主目录,并且您只想进行基于路径名的搜索,则以下方案是可行的,并带有一些shell hackery,并且可以使用standard locatedb
:
- 每个包含至少一个标记文件的目录都需要一个标准子目录,例如
.path-tags
;;
- $ FILE目录中每个带有链接$ TAG的文件(不应包含char
_
)都有一个链接$TAG_$FILE -> ../$FILE
我把locate-tag
脚本的细节留给你;它应该是两行或三行,仅使用locate
命令和Shell hackery。(如果您有兴趣,我可以写一个)。
尽管我不记得详细信息,但一些KDE讨论了这种元数据方案。
还应该有可能基于此方案进行更复杂的内容检查测试,并使用类似的脚本将其包裹起来find
。
关于更新要求的想法
- 用户可读的任何文件都可以自由标记 -是的,应该没有问题
- 用户可以搜索与一个或多个标签匹配的文件 -同样
- 可以在不丢失先前关联的标签的情况下移动文件 -可以随意移动它们所驻留的目录,但是如果从目录中移动文件,则会遇到麻烦。如果标签采用这种形式,
$TAG_$INODE_$FILE
并且我们有一种有效的方法来查找哪些路径具有给定的inode,那么我们可以做到这一点,只有当我们移出文件系统时,标签才会丢失。复制文件可能会带来一些麻烦,这显然比我最初的建议要复杂。
- 该系统可以轻松备份 -本质上并不困难。
- 不依赖任何桌面环境 -无
- 如果涉及到gui,则必须有cli后备 -这就是我们的住所!
后记您在对(1)的回答中向我展示
的链接(2)描述的“反向inode查找”文件可用于提供一些其他基础结构。我们可以在反向查找文件上运行服务,该服务检查标记文件名中给定的每个索引节点是否与标记指向的文件的索引节点(如果有)匹配。如果不匹配,则可以执行所需的手术(该inode仍然存在吗?它在哪里?),并且可以更改或重新生成反向查找文件,并且可以更新标签符号链接。
我预计会有一个棘手的情况:如果加标签的文件不在标签应显示的位置,反向查找文件说它仍然存在,而败类文件不在查找文件说的位置,查找文件不在那怎么办?日期?有几种方法可以处理这种情况,但显然没有一个理想的方法。除此之外,这整个任务似乎是Perl非常适合的事情...