2 个版本
0.1.1 | 2020 年 9 月 6 日 |
---|---|
0.1.0 | 2020 年 8 月 22 日 |
#2282 in 命令行工具
65KB
1.5K SLoC
{[m]atch=[r]eplace:[f]ormat}
mrf(发音为 "morph")允许您通过模式匹配重命名文件。
演示
重命名文件
组织文件
格式化数字
安装
在 Linux 上
您可以使用 Homebrew 安装 mrf
brew tap kerlilow/tools
brew install mrf
在 macOS 上
您可以使用 Homebrew 安装 mrf
brew tap kerlilow/tools
brew install mrf
从源代码
您可以使用 Rust 的包管理器 Cargo 从源代码安装 mrf
$ cargo install mrf
从二进制文件
发布页面 包括 Linux、macOS 和 Windows 的预编译二进制文件。
工作原理
标记化
输入字符串被分成标记。有 4 种类型的标记。
- 数字 - 连续的 ASCII 数字(0-9)。
- 空白 - 连续的 ASCII 空白。
- 标点 - 连续的 ASCII 标点。
- 文本 - 连续的字符,不属于以上任何一种。
例如,字符串 example-001
将被标记化为 [example][-][001]
。
匹配
每个匹配器匹配一个或多个标记。有两种类型的匹配器。
- 任何 - 匹配任何类型的标记,默认匹配器。例如:
{}
。 - 数字 - 匹配数字标记,指定为
n
。例如:{}
{n}。
注意:匹配器匹配所需的最少标记数。
例如,字符串 example-001
与替换字符串 {}
{n} 将匹配为
[example-][001]
^^^^^^^^ ^^^
Any Number
注意,这里的任何匹配器匹配了 2 个标记。
另一方面,对于相同的字符串,如果替换字符串 {}
将匹配为
[example][-001]
^^^^^^^ ^^^^
Any Any
注意,这次第一个任何匹配器匹配了 1 个标记,而第二个任何匹配器匹配了 2 个标记。
替换
可以在指定符中指定一个替换字符串,以替换匹配的子字符串(使用等号=
)。示例:{=replaced}
。
格式化
可以指定一个格式指定符来格式化匹配的子字符串(如果指定了替换,则格式化替换)。
支持以下格式指定符
- 填充(右对齐)- 指定所需的宽度。示例:
{:3}
。 - 零填充(右对齐)- 指定
0
,然后指定所需的宽度。示例:{:03}
。
用法
使用 mrf mv
重命名/移动文件
mrf mv <item>... <replacer>
示例
替换连字符为下划线
$ mrf mv * '{}{=_}{}'
Moving 1 out of 1 items:
image-001.jpg -> image_001.jpg
在重命名时保持编号
$ mrf mv * '{=photo}{}'
Moving 1 out of 1 items:
image-001.jpg -> photo-001.jpg
添加零填充
$ mrf mv * '{}{n:03}{}'
Moving 1 out of 1 items:
image-1.jpg -> image-001.jpg
使用 mrf exec
执行命令
mrf exec <command> <item>... <replacer>
示例
创建目录
$ mrf exec -r 'mkdir -p' * '{3}{=}'
Matched 1 out of 1 items:
image-2020-01-01.jpg -> 2020
复制文件
$ mrf exec cp * '{}{=_}{}'
Matched 1 out of 1 items:
image-001.jpg -> image_001.jpg
使用 mrf map
映射字符串(对于测试和理解很有用)
mrf map [FLAGS] <item>... <replacer>
示例
替换连字符为下划线
$ mrf map example-001 '{}{=_}{}'
example-001 -> example_001
通过管道传递到 cp(考虑使用“exec”子命令)
$ mrf map * '{}{=-}{}' | xargs -0 -n2 cp
路线图
- 更友好的错误报告
- 匹配高亮显示
- 更多的安装方法
- 精确、前缀、后缀匹配器
- 正则表达式匹配器
许可证
本项目采用 MIT 许可证的条款。
有关更多信息,请参阅此存储库中的 LICENSE.md 文件。
依赖关系
~12–23MB
~324K SLoC