recursive directory traversal (does not follow symbolic link)