Stuart Clarke wrote:
> My issue is this is very very slow and is taking about an hour to do 10
> file renames. Is there any way I can speed this up?
The slow bit will be scanning the filesystem.
I suggest you run a single File.find across the whole tree, building a
suitable data structure (e.g. a hash of {basename => full filename} for
every file which is eligible to be renamed)
Then when you read in the CSV, you can just cross-reference to this data
structure and locate the files immediately.
If there is a possibility of more than one file with the same basename
existing in multiple directories, then build your data structure
appropriately, e.g.
{basename => [fullpath1, fullpath2, fullpath3, ...]}
Alternatively, do this the other way round: read in the whole CSV (which
is likely to be fast) into a suitable data structure, and then scan
across the filesystem once; while you scan it, for every file you find
check whether the CSV had a rename instruction for it.
If the CSV is too big to fit into memory then consider loading it into a
database of some sort instead.
HTH,
Brian.
--
Posted via http://www.ruby-forum.com/.