文件管理的目的是为了帮助我们更快的索引目标文件。
一次好的搜索应当让时间复杂度应当接近常数的;一次坏的搜索,则是多次随机尝试后才发现目标。
为了达到让我们的搜索称为前者,我们需要在文件组织策略上做一些调整。
TL;DR
特殊文件夹 + 快键键 + 快捷方式 + 模糊搜索 + CLI 文件管理器 + 定期 archive
❓我们所面临的文件管理的问题是什么
其实文件的特性是符合网状结构的,其逻辑如同 书签管理中对于书签(网页)的论证是一样的:一个文件可以从不同角度描述获得不同的分类,因此采用标记的方式好于树状索引的方式。
但其实现代文件管理器已经是一个高度优化的树结构,而人们也已经基于此结构有了很多默认规则,因此,我们需要将 目光着眼于如何利用、扩展这些规则。
使用更多的文件夹
对于我来说,文件的管理其实与书签管理恰恰相反——要尽可能地增加文件夹的数量,来良好地将文件分类管理。
使用特殊文件夹来建立自己的索引习惯
相信不少人都会有 “把所有下载内容放到
Downloads
目录中”,“甚至解压的文件也放在 Downloads
” 里面的习惯。其实这不是个 Bug,这或许是个 Feature。
人的记忆力和注意力是有限的,使用特殊文件夹能够帮助我们让 80% 的操作都能聚焦在这些特殊文件夹之中:
- 对于不同类别的文件,尽可能使用文件夹将彼此隔离
- 约定大于配置,可以利用很多默认的文件夹、或者形成自己的配置习惯
- 比如
${HOME}/code/<language>/
存放不同语言的代码 - 比如
${HOME}/code/git/mine/
存放使用 git 的项目 - 比如
${HOME}/playground/
存放可以随时删除的文件(与/tmp
类似) - 比如针对网盘专门建立相应的文件夹
- 利用好
aliases
方便快速切换
快捷方式 & 快键键
快捷方式属于 GUI 用户比较常见的概念。在 Linux 上使用各种有图形界面的文件管理器,你也都能轻易使用快捷方式 以及收藏的方式来建立索引。
不过如果你使用命令行的话,
aliases
也能帮你达到同样的效果。当然也可以用 alias 直接绑定操作。
模糊搜索
如果你还没有接触过模糊搜索,你可以把他类比成 Windows 下的 Everything:
来自 Everything 官网
fzf 及其生态
在 *nix 下,更多使用的是 CLI 工具,比如 FZF。
FZF
通过配置 fzf 相关的 aliases,你能够不在需要漫长的 cd,而直接获得目标。(当然前提是你要对目标文件的文件名有印象)。
fzf 的诞生几乎建立了模糊搜索的又一个生态,比如 fzf-vim,这些周边工具你可以通过 Github Topics 来进行搜索。
z
z 采用的另一个思路:通过学习你的使用习惯,来通过你的简短的输入预测你的目标路径。
CLI 文件管理器
除了以上方法外,直接用 CLI 文件管理器也是一个不错的选择。
笔者最早接触的有 ranger 亮点是层进式的文件浏览,以及文件预览功能。
当然随后发现 nnn 能够支持多工作路径以及非常方便的 hotkeys,因此目前主要使用它来进行 CLI 文件管理。
如果用这些工具配上 Tiling Windows Manager 的话,那又是另一篇文章了。
定期 archive
最后就是一定要定期清理冗余的文件,一般来说从顶层目录直接打成压缩包即可。
并且进行备份,建议放在移动硬盘上,腾出电脑的硬盘空间。
另外就是:一定要舍得下狠手XD。
其他
或许每个人都有自己优化的方向,但是我想有一点经验应该是共通的: 如果发现这是一个痛点,请直面它、解决它,哪怕意味着“强迫”自己学新的东西。