kazbek/bin/rename.rb

30 lines
833 B
Ruby
Raw Permalink Normal View History

2025-02-21 11:21:35 +01:00
#!/usr/bin/env ruby
# This Source Code Form is subject to the terms of the Mozilla Public License,
# v. 2.0. If a copy of the MPL was not distributed with this file, You can
# obtain one at https://mozilla.org/MPL/2.0/. -}
# frozen_string_literal: true
require 'fileutils'
if ARGV.length == 3
Dir.glob("#{ARGV[0]}/**/*.#{ARGV[1]}").each do |original|
new_name = original.sub /\.#{Regexp.escape(ARGV[1])}$/, ARGV[2]
puts "Renaming #{original} to #{new_name}."
FileUtils.mv original, new_name
end
else
$stderr.puts <<~USAGE
Usage:
#{$0} directory old_extension new_extension
The directory is searched recursively.
The old and new extensions should not begin with a dot (.).
Example: #{$0} src ce.vue vue
Changes the extensions of all files matching src/**/*.ce.vue to .vue.
USAGE
exit 1
end