Skip to content

Instantly share code, notes, and snippets.

@cneud
Created April 18, 2014 16:13
Show Gist options
  • Save cneud/11052057 to your computer and use it in GitHub Desktop.
Save cneud/11052057 to your computer and use it in GitHub Desktop.
Ruby script for recursively renaming files and directories
#!/usr/bin/ruby
def rename(dir, map)
Dir.foreach(dir) do |filename|
next if filename =~ /^\.+$/ or File.directory?("#{dir}/#{filename}")
(entry, extension) = filename.sub("file", "").split(".")
entry.sub!(/^0+/, "")
if map[entry].nil?
raise "PROBLEM: no entry for file #{dir}/#{filename} with id #{entry}"
else
puts "Renaming #{dir}/#{filename} to #{dir}/#{map[entry] + (extension.nil? ? "" : "." + extension)}"
File.rename("#{dir}/#{filename}", "#{dir}/#{map[entry] + (extension.nil? ? "" : "." + extension)}")
end
end
end
def recurse(dir, map)
Dir.foreach(dir) do |dirname|
next if dirname =~ /^\.+$/ or !File.directory?("#{dir}/#{dirname}")
rename("#{dir}/#{dirname}", map) if dirname == "outputUrl"
recurse("#{dir}/#{dirname}", map)
end
end
map = {}
i = 1
STDIN.each_line do |listEntry|
map[i.to_s] = listEntry.strip
i += 1
end
recurse(".", map)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment