Data source: http://rosettacode.org/wiki/Walk_a_directory/Recursively
