Strona 1 z 1

[Ruby] Usuwanie plików w katalogu

: 19 wrz 2009, 11:03
autor: Numb
Witam.

A katalogu mam około 9000 plików bmp, ale niektóre z nich mają rozmiar 321 bajtów. Chcę je usunąć i zostawić pozostałe z innymi rozmiarami.

Do tej pory doszedłem do takiego skryptu:

Kod: Zaznacz cały

i = 0
begin
i += 1
File.delete("#{i}.bmp") if File.size("#{i}.bmp") == 321
end while i < 9000
Usunęło mi wszystkie pliki o rozmiarze 321 bajtów, ale kiedy zmieniłem rozmiar pliku w tym skrypcie, zaczęło mi sypać błędami o file not found. Da się coś z tym zrobić?

Pliki kolejno mają nazwy od 1.bmp do 9000.bmp.
Pozdrawiam,
Numb

Odp: [Ruby] Usuwanie plików w katalogu

: 08 paź 2010, 09:53
autor: Radarek
Wiem, że wpis stary, ale ponieważ ktoś mógłby trafić$tutaj to dobrze by było żeby była jakaś odpowiedź.

Błąd pojawia się dlatego, że skasowałeś część plików i wywołanie File.size dla plików który nie istnieje rzuca wyjątkiem. Trzeba po prostu dodać$sprawdzanie na istnienie pliku. Pozwolę sobie dodatkowo zapisać to bardziej "the ruby way".

Kod: Zaznacz cały

(0..9000).each do |i|
  fname = "#{i}.bmp"
  File.delete(fname) if File.exists?(fname) && File.size(fname) == 321
end