Mariusz Pekala
6/14/2007 9:26:00 AM
On 2007-06-14 16:01:30 +0900 (Thu, Jun), Rebhan, Gilbert wrote:
>
> Hi,
>
> i want to copy a dir recursive with all files included,
> but rename all dirnames that match a pattern, i.e.
>
> /srcdir
> /bla/foobar/blabla
> /bla/test/subtest/foobar
> /foobar/test
> /foobar
>
> should be
>
> /targetdir
> /bla/foobaz/blabla
> /bla/test/subtest/foobaz
> /foobaz/test
> /foobaz
>
> i tried =
>
> re=/foobar/
> sub="foobaz"
>
> Dir['Y:/test/**/**'].each { |old|
> next if old == '.'||old== '..'||old =~ /\./
> unless /re/.match(old)
> new = old.sub(re,sub)
> File.rename(old,new)
> end
> }
>
> the /foobar folder on first level and on second level get renamed, but
> it dosn't
> work, when i have /foobar on the third level, means
>
> /foobar/foobar/foobar gets
> /foobaz/foobaz/foobar and Exit Code 1
>
> /test/sub3/foobar/foobar gets
> /test/sub3/foobaz/foobar and Exit Code 1
>
> Error message i.e. =
> No such file or directory - Y:/test/sub3/foobar/foobar or
> Y:/test/sub3/foobaz/foobar
>
> Any ideas what's wrong ?
Are you sure the code you posted here is the code you really run?
I guess you want 'if' instead of 'unless', because you want to rename
the file if the re matches, not if it does not.
Second - you should use re.match(old) not /re/.match(old) since 're'
variable is already a Regexp.
Having these errors I doubt you would have any file renamed.
--
Ceterum censeo Internet Explorer esse delendam.