找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

1123

积分

0

好友

155

主题
发表于 前天 01:38 | 查看: 3| 回复: 0

f2是一款由开发者ayoisaiah使用Go语言开发的轻量级、高性能、跨平台命令行批量文件重命名工具。得益于Go语言的特性,它编译为静态二进制文件,具备极强的可移植性和执行效率,可在Linux、macOS和Windows等主流操作系统上无缝运行。其设计哲学聚焦于“简单、快速、安全”,旨在为用户提供一种直观且功能强大的方式来批量修改文件名,尤其适合处理大量文件或遵循复杂命名规则的场景。

相比传统的重命名工具(如Linux下的rename命令),f2提供了更友好的交互式预览机制、强大的正则表达式支持、大小写转换、序列编号、扩展名处理等高级功能。最关键的是,它默认以“干运行”(dry-run)模式启动,确保用户在最终执行前可以清晰预览所有变更,有效避免了误操作风险。

核心特性

  1. 跨平台支持
    基于Go编译生成的静态二进制文件,无需任何外部运行时环境,真正做到下载即用。

  2. 交互式预览(Dry-run模式)
    默认启用预览模式,清晰列出所有计划中的重命名操作,用户确认无误后才真正执行,安全可靠。

  3. 强大的正则表达式支持
    完整支持Go标准库的正则语法(RE2引擎),能够灵活匹配和替换文件名中的任意模式。

  4. 多种内置转换函数
    • 大小写转换(upper, lower, title
    • 序列编号(如 file001.jpg, file002.jpg
    • 扩展名保留或替换
    • 自动移除非法字符(如Windows系统不支持的<>:"/\|?*

  5. 完善的安全机制
    • 自动检测重命名冲突(例如两个文件将被重命名为相同名称)
    • 默认跳过已存在的目标文件
    • 可通过--overwrite参数显式指定强制覆盖

  6. 支持子目录递归操作
    通过-r--recursive参数,可对指定目录及其所有子目录下的文件进行批量重命名。

  7. 高度可定制化
    用户可以通过组合不同的命令行参数,实现复杂的重命名逻辑。

  8. 开源免费
    项目采用MIT许可证,完全开源,社区友好。

安装部署指南

1. 官方资源

GitHub仓库https://github.com/ayoisaiah/f2
官方文档https://f2.freshman.tech/guide/getting-started.html
Releases下载https://github.com/ayoisaiah/f2/releases

2. 安装方式

✅ 方式一:下载预编译二进制文件(推荐)
  1. 访问Releases页面。
  2. 根据操作系统选择对应版本:
    • Linux: f2_linux_amd64
    • macOS: f2_darwin_amd64f2_darwin_arm64(适用于Apple Silicon芯片)
    • Windows: f2_windows_amd64.exe
  3. 下载后,在Linux/macOS上赋予执行权限并移动到系统路径:
    chmod +x f2_linux_amd64
    sudo mv f2_linux_amd64 /usr/local/bin/f2
  4. 验证安装:f2 --version
✅ 方式二:使用包管理器安装

Homebrew (macOS/Linux):

    brew install f2

Scoop (Windows):

    scoop bucket add extras
    scoop install f2

Arch Linux (AUR):

    yay -S f2-bin
    # 或使用 paru
    # paru -S f2-bin
✅ 方式三:从源码编译(需Go环境)
  1. 确保已安装Go(版本≥1.18)。
  2. 克隆仓库并编译:
    git clone https://github.com/ayoisaiah/f2.git
    cd f2
    go build -o f2 .
  3. 将生成的f2可执行文件移动到PATH环境变量包含的目录中。

基本使用示例

示例1:简单字符串替换

将所有以old_开头的.txt文件重命名为以new_开头:

f2 -f "old_" -r "new_" old_*.txt

命令执行前会显示变更预览,按回车确认后才会实际执行重命名。

示例2:使用正则表达式提取并重组

原始文件:photo_20230501.jpg, photo_20230502.jpg
目标格式:vacation_0501.jpg, vacation_0502.jpg

f2 -f "photo_\\d{4}(\\d{4})" -r "vacation_$1" *.jpg

此命令匹配photo_后跟8位数字,并捕获后4位作为分组$1用于替换。

示例3:添加序列编号

a.txt, b.txt, c.txt重命名为doc_001.txt, doc_002.txt, doc_003.txt

f2 -f ".*" -r "doc_{num}" *.txt

其中{num}是f2的特殊占位符,代表自动递增的编号(默认三位数,可配置)。

示例4:转为小写并替换空格

f2 -f " " -r "_" -c lower *.MP4

-c lower参数表示将最终结果全部转为小写。命令先將空格替换为下划线,再对整个文件名进行小写转换。

示例5:递归处理子目录

将指定目录及其子目录下所有.JPG扩展名改为小写.jpg

f2 --find "\\.JPG$" --replace ".jpg" --recursive /path/to/photos

使用长参数--find, --replace, --recursive可以使命令意图更清晰,避免与替换标志-r混淆。

高级功能与技巧

1. 占位符支持

f2支持以下特殊占位符,使重命名规则更灵活:
{num}:自动递增数字(格式如001, 002...)
{ext}:原文件的扩展名(不含点号)
{basename}:原文件名(不含路径和扩展名)
例如,创建带序号的文件备份:

f2 -f ".*" -r "backup_{num}.{ext}" *.log

2. 大小写转换选项

-c upper:将所有字符转换为大写。
-c lower:将所有字符转换为小写。
-c title:将每个单词的首字母转换为大写。

3. 冲突处理策略

默认行为:当目标文件名已存在时,跳过当前重命名操作。
强制覆盖:使用--overwrite参数,遇到冲突时直接覆盖已存在的文件。

4. 输出控制

--quiet:启用静默模式,不显示预览信息(请谨慎使用)。
--verbose:启用详细模式,显示更全面的操作日志。

典型应用场景

整理摄影素材:统一数码照片的命名格式(如IMG_xxx -> 旅行日记_xxx)。
处理下载内容:批量移除视频文件名称中的广告或冗余前缀。
开发者重构代码:快速重命名大量测试文件(如xxx_test.go -> test_xxx.go)。
系统文件清理:修正从Windows系统传输到Linux后文件名中包含的非法字符。
自动化运维脚本:将f2集成到CI/CD或日常维护脚本中,实现文件名的自动化整理。

常见问题(FAQ)

Q:f2会修改文件的内容吗?
A:不会。f2仅操作文件的名称(元数据),不会以任何方式读取或修改文件的实际内容。

Q:能否使用f2重命名目录(文件夹)?
A:截至目前(v2.x版本),f2仅支持对文件进行重命名,不支持直接重命名目录。

Q:如何取消一次已经输入但未确认的命令?
A:在预览阶段,直接按Ctrl+C组合键即可中断命令,不会执行任何更改。

Q:f2支持中文等Unicode文件名吗?
A:完全支持。由于底层使用Go语言开发,原生支持UTF-8编码,可以完美处理中文、日文、韩文等任何Unicode字符组成的文件名。

总结

f2是一款契合现代开发习惯的高效、安全的批量重命名命令行工具。它凭借简洁直观的接口、强大的正则处理能力以及默认的安全预览机制,在众多同类工具中表现突出。无论是用于日常文件整理,还是集成到更复杂的自动化流程中,f2都是一个非常可靠且功能全面的选择。




上一篇:CMake项目强制静态库链接原理剖析:实现C++程序独立部署
下一篇:CUDA映射机制核心解析:UVA/零拷贝内存优化GPU高性能计算
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2025-12-17 01:32 , Processed in 0.102272 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 云栈社区.

快速回复 返回顶部 返回列表