Brock Weaver wrote:
> Showing off ruby to a coworker, and I want to emphasize how succinct yet
> clear it can be.  So I want to rename all .mp3 files to .temp, or vice versa
> in the current directory -- in the shortest LOC *that you would actually write*;
> not the "here's a one-liner nobody in their right mind would every write if
> they had to maintain it".
> 
> Here's my first solution:
> 
> Dir.new("./").each do |file|
> 	if file.match(/mp3$/)
> 		File.rename(file, file.gsub(/mp3$/, 'temp'))
> 	elsif file.match(/temp$/)
> 		File.rename(file, file.gsub(/temp$/, 'mp3'))
> 	end
> end
> 
> Note you can NOT do the following, as it renames mp3 to temp,
> then immediately renames that same file back to mp3...
> 
> Dir.new("./").each do |file|
> 	File.rename(file, file.gsub(/mp3$/, 'temp')) if file.match(/mp3$/)
> 	File.rename(file, file.gsub(/temp$/, 'mp3')) if file.match(/temp$/)
> end
> 
> Any ideas?
> 

arr1, arr2 = Dir["*.mp3"], Dir["*.temp"]
arr1.each { |f| File.rename( f, f.sub( /mp3$/, 'temp' ) ) }
arr2.each { |f| File.rename( f, f.sub( /temp$/, 'mp3' ) ) }

Zach