我有一个包含很多文件的文件夹。其中一些比其他更常用和更需要。
我想要有“文件夹”,它代表具有特定过滤器的该目录的视图。文件名“has _final”或文件大小 < 5 mb 等过滤器。
我知道,有find、grep等命令。我希望他们的结果作为带有“硬链接”的文件系统目录。
有什么办法可以做到这一点吗?
答案1
在 Google 中进行简短搜索会产生几个 FUSE 解决方案:
- cmdfs,相当强大,除了过滤之外还可以进行转换甚至动态创建文件,
- ROFS-过滤,使用与定义模式匹配的文件创建只读目录,以及
- 使用 libfuse Wiki 中列出的目录列表的各种其他解决方案https://github.com/libfuse/libfuse/wiki/Filesystems。
答案2
您说您想要硬链接,但您也说您想要“代表视图的“文件夹””。如果你对某件事感到满意好像你想要什么,考虑 shell 函数:
ls_final() { ls "$@" | grep has_final; }
您目前提出的问题是
文件名“有_final”
我不知道这是否是一个错字
文件名包含“_final”
如果是,请grep
相应更改。
文件大小的过滤有点困难,特别是如果选择限制不是 10 的幂(或小整数乘以 10 的幂)。grep
如果您始终使用-l
(小写 L)选项或等效选项,则可以使用 来管理它。可能还有其他方法,尽管优雅、安全且高效地做到这一点可能非常困难。
长话短说ls_final
如果您养成使用、等的习惯ls_small
,就会看起来像仅存在所需的文件。
答案3
cd /path/to/filter_directory
find /source/dir -mindepth 1 -maxdepth 1 [...filter tests...] -exec ln -t . {} +