Ruby 语言 实现文件批量重命名工具 支持正则替换 / 日期戳 / 序号递增

Ruby阿木 发布于 17 小时前 1 次阅读


Ruby 文件批量重命名工具实现与解析

在处理大量文件时,文件重命名是一个常见的操作。手动重命名文件既耗时又容易出错。编写一个自动化文件重命名工具可以大大提高工作效率。本文将使用 Ruby 语言实现一个支持正则替换、日期戳和序号递增的文件批量重命名工具。

工具需求分析

在实现文件批量重命名工具之前,我们需要明确以下需求:

1. 支持指定目录下所有文件的批量重命名。
2. 支持使用正则表达式进行文件名替换。
3. 支持在文件名中插入日期戳。
4. 支持在文件名中插入序号递增。

工具实现

以下是使用 Ruby 实现的文件批量重命名工具的代码:

ruby
require 'fileutils'
require 'date'

def rename_files(directory, pattern, replacement, date_format = nil, start_number = 1)
检查目录是否存在
unless Dir.exist?(directory)
puts "Directory not found: {directory}"
return
end

遍历目录下的所有文件
Dir.glob(File.join(directory, '')).each_with_index do |file, index|
获取文件名和扩展名
filename = File.basename(file)
extension = File.extname(file)

使用正则表达式替换文件名
new_filename = filename.gsub(pattern, replacement)

添加日期戳
if date_format
new_filename = new_filename.insert(0, Date.today.strftime(date_format))
end

添加序号递增
new_filename = "{index + start_number}.{new_filename}"

构建新的文件路径
new_file_path = File.join(directory, new_filename)

重命名文件
if File.exists?(new_file_path)
puts "File already exists: {new_file_path}"
else
begin
File.rename(file, new_file_path)
puts "Renamed {file} to {new_file_path}"
rescue => e
puts "Error renaming file: {e.message}"
end
end
end
end

使用示例
directory = '/path/to/your/directory'
pattern = /old_name/
replacement = 'new_name'
date_format = '%Y%m%d'
start_number = 1

rename_files(directory, pattern, replacement, date_format, start_number)

代码解析

1. 引入库:我们引入了 `fileutils` 和 `date` 库。`fileutils` 用于文件操作,`date` 用于生成日期戳。

2. 定义 `rename_files` 方法:该方法接受五个参数:`directory`(目录路径)、`pattern`(正则表达式模式)、`replacement`(替换文本)、`date_format`(日期格式,可选)和 `start_number`(序号起始值,可选)。

3. 检查目录是否存在:使用 `Dir.exist?` 方法检查指定目录是否存在。

4. 遍历文件:使用 `Dir.glob` 方法获取目录下所有文件的路径,并使用 `each_with_index` 方法遍历文件。

5. 获取文件名和扩展名:使用 `File.basename` 和 `File.extname` 方法获取文件名和扩展名。

6. 使用正则表达式替换文件名:使用 `gsub` 方法根据提供的正则表达式和替换文本替换文件名。

7. 添加日期戳:如果提供了日期格式,使用 `Date.today.strftime` 方法生成日期字符串,并将其插入到文件名的前面。

8. 添加序号递增:使用 `index + start_number` 生成序号,并将其插入到文件名的前面。

9. 构建新的文件路径:使用 `File.join` 方法构建新的文件路径。

10. 重命名文件:使用 `File.rename` 方法重命名文件。如果新的文件路径已存在,则输出提示信息。

总结

本文使用 Ruby 语言实现了一个支持正则替换、日期戳和序号递增的文件批量重命名工具。通过分析工具需求,编写相应的代码,并进行了详细的解析,使读者能够更好地理解工具的实现过程。在实际应用中,可以根据需求调整工具的功能和参数,以满足不同的重命名需求。