由 Ayooluwa Isaiah 开发的用于批量重命名文件和目录的非常简洁的 CLI 工具,用 Go 编写,设计用于跨平台工作。
这里面有很多很棒的设计。基本用法很直观——以下是如何将当前目录中的所有.svg
文件重命名为.tmp.svg
:
f2 -f '.txt' -r '.tmp.txt' path/to/dir
f2 默认为空运行,如下所示:
*————————————————————*————————————————————————*————————* | ORIGINAL | RENAMED | STATUS | *————————————————————*————————————————————————*————————* | claude-pelican.svg | claude-pelican.tmp.svg | ok | | gemini-pelican.svg | gemini-pelican.tmp.svg | ok | *————————————————————*————————————————————————*————————* dry run: commit the above changes with the -x/--exec flag
运行-x
执行重命名。
真正酷炫的是高级功能——Ayooluwa 把一切都考虑周全了。EXIF 集成尤其精妙——这里有一个来自高级教程的示例,它重命名了一个照片库,并使用 EXIF 创建日期作为文件路径的一部分:
f2 -r '{x.cdt.YYYY}/{x.cdt.MM}-{x.cdt.MMM}/{x.cdt.YYYY}-{x.cdt.MM}-{x.cdt.DD}/{f}{ext}' -R
-R
标志表示“递归”。小写的-r
使用变量语法来处理 EXIF 数据。还有很多其他选项,包括使用文件内容哈希值的哈希变量。
安装说明
我通过 Homebrew 在 Mac 上安装了 Go 1.23.2。我运行了以下命令:
go install github.com/ayoisaiah/f2/v2/cmd/f2@latest
并出现错误:
requires go >= 1.24.2 (running go 1.23.2; GOTOOLCHAIN=local)
因此我使用 Homebrew 升级了 Go:
brew upgrade go
这让我升级到了 1.24.3 版本,然后go install
命令生效了。它把二进制文件放到了~/go/bin/f2
目录下。
还有一个 npm 包,类似于我之前写的人们在 Python 轮子中捆绑二进制工具的模式。
来源: Hacker News
原文: https://simonwillison.net/2025/May/24/f2/#atom-everything