#numbers #move #batch #rename

app bmv

批量移动 -- 轻松重命名大量文件

2个版本

0.1.1 2022年4月10日
0.1.0 2022年3月22日

#66 in #rename

GPL-3.0-or-later

20KB
176

bmv - 批量移动

Build Release crates.io

轻松重命名大量文件。

bmv 是一个基于正则表达式的移动/重命名工具,可以一次性处理许多文件和目录。

用法

bmv 命令以 从-到 模式编写,类似于 sed 但更简单。例如,sed -i 's/foo/bar' <files> 在 bmv 中将是 bmv 'foo' 'bar' <files>。替换将在 所有 匹配中进行。

bmv '(.*)\.foo' '$1.bar' ./**/*

您可以使用括号捕获第一个参数中的任何正则表达式匹配,然后在第二个中使用 $n 引用它,其中 n 是从 1 到您拥有的组总数的一个数字。

如果您更喜欢,也可以使用命名捕获组,使用 ?P<name> 语法。上面的示例将如下所示

bmv '(?P<filename>.*)\.foo' '$filename.bar' ./**/*

如果您想在第二个参数中使用字面美元符号,请使用 $$

回溯不起作用。

是的,这是因为 Rust 的 regex crate 不支持它们,而 bmv 使用它进行匹配。就像 crate 的文档所说,“[i]n exchange, all searches execute in linear time with respect to the size of the regular expression and search text。”

在使用 glob 时不匹配隐藏文件!

bmv 本身不处理解析 glob,它只是从标准输入接收它应该操作的文件列表。因此,为了包含隐藏文件,您需要确保您使用的 shell 将它们包含在您的 glob 中。在 zsh 中,这可以通过使用 (D) 修饰符轻松完成。

  bmv 'foo' 'bar' ./**/*(D)

bash 中,您可以设置 dotglob

安装

从源码手动安装

您需要安装 Rust 和 Cargo。

git clone https://github.com/ranmaru22/bmv.git
cd bmv
cargo install --locked --path=.

这将安装具有最新稳定版本的 master 分支。如果您想要开发版本,请切换到 develop 分支。

git checkout develop

从 Cargo 注册表

您需要安装 Rust 和 Cargo。

cargo install bmv --locked

从软件包管理器

tbd

免责声明

bmv 以“现状”和“无担保”提供。我主要为了个人使用而开发了它,所以它可能有一些陷阱和错误。请随意修改它(如果您喜欢,可以发送 PR,我将高兴地包括任何改进),但请自行承担风险。

依赖项

~4–14MB
~122K SLoC