4834l2

Listing 2. Checking for Files with the delete_order Method

def delete_older(path, age_in_seconds)

  Dir.foreach(path) { |name|

    next if name == '.' or name == '..'
 
    full_name = File.join(path, name)

    case File.ftype(full_name)

    when "file"
      age = Time.now - File.mtime(full_name)

      if age > age_in_seconds
        puts "Deleting file #{full_name}"
        File.unlink(full_name)
      end

    when "directory"
      delete_older(full_name, age_in_seconds)
      if (Dir.entries(full_name) - ['.', '..']).empty?
        puts "Deleting directory #{full_name}"
        Dir.rmdir(full_name)
      end
    end

  }
end
