A bit more compact:

  def copied_name(source_name)
    if source_name =~ /\ACopy (\d+ )?of (.*)\z/i
      "Copy #{($1||1).to_i+1} of #{$2}"
    else
      "Copy of #{source_name}"
    end
  end

You can simplify ($1||1) to just $1, if you don't mind starting at Copy 
1 of... instead of Copy 2 of...
-- 
Posted via http://www.ruby-forum.com/.