Podmiana tekstu w plikach

Witam,

Chciałem sobie napisać programik do podmieniania tekstu w plikach. I spłodziłem takiego potwora. Niestety nie działa. Szukałem jakiejś metody ale nie mogę znaleść.

#!/usr/bin/env ruby dir = Dir.open(ścieżka do pliku) i = 0 while i < dir.size File.open(dir[i]) do |file| file.each {|line| line.sub(/collapse.gif/, 'collapse.png')} end i += 1 end
Pozdrawiam

The All-Seeing Eye

#!/usr/bin/env ruby dir = Dir.open(ścieżka do pliku) i = 0 while i < dir.size content = File.read(dir[i]).gsub!(/collapse.gif/, 'collapse.png') File.open(dir[i], "w") do |f| f << content end i += 1 end

Niestety nie działa :confused:

undefined method `size' for #<Dir:0x2adbf8aadf80> (NoMethodError)

Dla

while i < dir.size

Myślałem, że miałeś problemy z samym zapisem.

#!/usr/bin/env ruby Dir.open(ścieżka do pliku).select {|f| File.file?(f) }.each_with_index do |f, i| content = File.read(f).gsub!(/collapse.gif/, 'collapse.png') File.open(f, "w") do |f| f << content end end
Nie chce mi się sprawdzać czy działa… :).

Dir.glob("pliki/*").each do |file|
    content = IO.read(file).gsub(/collapse.jpg/, 'collapse.png')
    File.open(file, "w") do |f| 
        f << content
    end
end

Albo wersja perl-like:

oki@nil:~/ruby/pliki$cat *
collapse.jpg
collapse.jpg
collapse.jpg
collapse.jpg
oki@nil:~/ruby/pliki$ruby -pi -e ‘gsub(/collapse.jpg/, “collapse.png”)’ *
oki@nil:~/ruby/pliki$cat *
collapse.png
collapse.png
collapse.png
collapse.png
oki@nil:~/ruby/pliki$