I am writing a small script which recursively goes down a dir
hierarchy, and when it reaches a set of files, it applies a 3rd party
application which modifies those files, and prepends the name with
“Mod-”.
So for example, if i had a directory with only 1 file: C:\myDir
\myFile.txt, and I ran the app, I would end up with the following
files in c:\myDir
myFile.txt
Mod-myFile.txt
Basically, what i want to do is traverse down the hierarchy, when i
reach a set of files, call the app on that directory, then delete the
original, and rename the new file so that the “Mod-” is removed.
Unfortunately, the Find function doesnt see the newly created file,
and thus i cant delete & rename. My code looks something like this:
Find.find(startingDir) do |path|
if File.directory?(path)
next
else
system(“myapp #{path}”)
puts path
if File.basename(path) =~ /^Mod-/
if File.exists?(path.sub(‘Mod-’, ‘’))
File.delete(path.sub(‘Mod-’, ‘’))
end
File.rename(path, path.sub(‘Mod-’, ‘’))
end
end
end
I was wondering if there was a way to reset the path one level up
(i.e. where “puts path” is above), that way the current directory
would be refreshed, and the new files would be recognized.
thanks!