2 个版本

0.1.1 2020 年 9 月 6 日
0.1.0 2020 年 8 月 22 日

#2282 in 命令行工具

MIT 许可证

65KB
1.5K SLoC

{[m]atch=[r]eplace:[f]ormat}

crates.io License Tests Status

mrf(发音为 "morph")允许您通过模式匹配重命名文件。

演示

重命名文件

Rename files demo

组织文件

Organize files demo

格式化数字

Format numbers demo

安装

在 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 种类型的标记。

  1. 数字 - 连续的 ASCII 数字(0-9)。
  2. 空白 - 连续的 ASCII 空白。
  3. 标点 - 连续的 ASCII 标点。
  4. 文本 - 连续的字符,不属于以上任何一种。

例如,字符串 example-001 将被标记化为 [example][-][001]

匹配

每个匹配器匹配一个或多个标记。有两种类型的匹配器。

  1. 任何 - 匹配任何类型的标记,默认匹配器。例如:{}
  2. 数字 - 匹配数字标记,指定为 n。例如:{}{n}

注意:匹配器匹配所需的最少标记数。

例如,字符串 example-001 与替换字符串 {}{n} 将匹配为

[example-][001]
 ^^^^^^^^  ^^^
   Any     Number

注意,这里的任何匹配器匹配了 2 个标记。

另一方面,对于相同的字符串,如果替换字符串 {} 将匹配为

[example][-001]
 ^^^^^^^  ^^^^
   Any     Any

注意,这次第一个任何匹配器匹配了 1 个标记,而第二个任何匹配器匹配了 2 个标记。

替换

可以在指定符中指定一个替换字符串,以替换匹配的子字符串(使用等号=)。示例:{=replaced}

格式化

可以指定一个格式指定符来格式化匹配的子字符串(如果指定了替换,则格式化替换)。

支持以下格式指定符

  1. 填充(右对齐)- 指定所需的宽度。示例:{:3}
  2. 零填充(右对齐)- 指定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