From: Paul Archer Date: 2009-07-22T06:03:13+09:00 Subject: Re: safe move/copy with incrementing filenames? --792783111-1934144592-1248210188=:27283 Content-Type: MULTIPART/MIXED; BOUNDARY="792783111-1934144592-1248210188=:27283" This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. --792783111-1934144592-1248210188=:27283 Content-Type: TEXT/PLAIN; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 8BIT Thanks. That's a good start. While I think I'll be working one file at a time, FileUtils.mv can take a glob of filenames as the source, and a directory as the destination--so I need to make sure I check every file individually. If I end up with something that's not too ugly, I'll post it. Paul Tomorrow, pharrington wrote: >> On Jul 20, 10:50�pm, Paul Archer wrote: >> So, I'm working on some DAM (digital asset management) scripts, and I want >> to make sure that I don't overwrite any files when I move or copy them. >> I was about to start working on a move method that would add a number to >> the destination filename if the name already exists. (IE >> mv('pma_20090720_1234.jpg', 'archive/2009/07') might create an >> 'archive/2009/07/pma_20090720_1234-1.jpg if pma_20090720_1234.jpg exists.) >> >> Question: is there already a module that can do that? >> >> Paul > > I've just been doing this: > > def unique(filename) > count = 0 > unique_name = filename > while File.exists?(unique_name) > count += 1 > unique_name = "#{File.join( > File.dirname(filename), > File.basename(filename, ".*"))}_#{count}#{File.extname > (filename)}" > end > unique_name > end > > there's probably a better way though > --792783111-1934144592-1248210188=:27283-- --792783111-1934144592-1248210188=:27283--