13 个不稳定版本 (3 个破坏性更新)
0.4.1 | 2023年6月5日 |
---|---|
0.4.0 | 2023年6月3日 |
0.3.1 | 2023年5月25日 |
0.2.6 | 2023年5月21日 |
0.1.1 | 2023年5月15日 |
#2331 in 命令行工具
每月 66 次下载
240KB
4.5K SLoC
organize
文件管理自动化工具。
当前状态
目前处于非常初期的开发阶段。请稍后再来!
背景
Python 的 organize 是一个文件管理自动化工具。
根据其文档
你的桌面一团糟?你在下载和文档中找不到任何东西?手动排序和重命名所有这些文件太麻烦了?是时候自动化一次并从中永久受益了。organize 是一个命令行、开源的 Hazel(macOS)或 File Juggler(Windows)等应用程序的替代品。
这是相同概念的 Rust 实现。
示例
-
过滤
files
,这些文件在一个位置上小于 20KBorganize filter size-l C:\Users\dailyuse\dev-src\organize\docs\screenshots-t files--range..20KB
这个过滤器使用了 Rust 的
range
语法(总是包含)..11MB
=> 小于15MB..
=> 大于10KB..20MiB
=> 大于 10 KB,但小于 20 MiB
注意:你可以使用
decimal
(十进制)和binary
(IEC)多字节单位。例如,KiB
或KB
,GB
或GiB
。它们将被相应地 转换,并且是 不区分大小写 的。 -
根据它们的 MIME 类型过滤
files
organize filter mimetype-l C:\organize\docs\screenshots-t files--mimetype image/jpeg
-
根据创建日期(在过去 5 天内创建),过滤
files
,忽略名称中包含target\
的路径,递归,最大4
层深度。organize filter-r-m4created-l. -t files--ignore-path target\--range..5d
-
过滤
files
,其中文件名以go
结尾,递归,最大2
层深度organize filter-r-m2name-l"C:\organize\"-t files --ends-with"go"
-
在两个位置中筛选
files
,扩展名匹配rs
或toml
,递归,最大深度2
层organize filter-r-m2扩展名-l C:组织-l D:文件夹-t files--exts rs--exts toml
-
筛选
files
和folders
,它们是空的(目录中0 字节
或没有文件),递归,最大深度4
层,忽略路径名中的git
organize filter-r-m4空-l"C:\organize\"-t both --ignore-path git
-
筛选
files
和folders
,它们是空的(目录中0 字节
或没有文件),递归,最大深度4
层,仅忽略文件名中的git
organize filter-r-m4空-l"C:\organize\"-t both --ignore-name git
媒体
注意:这是一个正在进行中的项目。并非所有功能都已实现,(目前)。
主要
过滤器
动作
目标
目前,这个 Rust 版本的 organize
的第一个目标是与它的 Python 等价物具有功能一致性。
但是:我想采取另一种方法来解决该问题。将 config
文件中的所有内容映射过来也相对复杂,因为我们受限于 yaml/
json/
toml/
的语法。ron
也许这正是需要解决的问题!
基本上,你想要一个配置文件,它可以替代一个小型脚本语言。包含预定义的 filters
和 actions
,这些会被应用于过滤器输出的项。
基本上,配置文件中的几乎所有内容都是函数/方法的参数。
这使得一切变得更加复杂。
-
如果我们以这样的方式实现 Rust 的
organize
,即我们可以调用organize filter extension -ext "exe, msi, apk" -path {}
并输出所有匹配此precoded
过滤器的路径?这样我们就可以轻松地在 shell 脚本中利用它。 -
在第二个实现阶段,我们可以嵌入一个脚本引擎,如 rhai,其中我们将
organize
的某些功能公开为functions
并将其注册到rhai
引擎中。 -
我们不必在复杂的配置文件语法中按一切,我们可以利用脚本语言并将其简化到最小语法。
话虽如此,Rust 重构对我来说的一个大因素是我喜欢 Rust。我想在更好的错误处理和更易于维护软件的语言中重新实现 organize
的方法。这使开发更快,同时减少了出错的可能性。
我是 Rust 实现的第一个用户,并将用它来处理我的私人文件。因此,对我来说一个重要的目标是稳定性。
许可
AGPL-3.0-or-later;见 LICENSE。
依赖
~20–51MB
~844K SLoC