module Program

open System.IO

let EnumerateDirectoryFilesInfo root = 
    let rec traverse (d: DirectoryInfo) = 
        seq {   for f in d.GetFiles() do
                    yield f
                for dd in d.GetDirectories() do
                    yield! traverse dd              }
    traverse (DirectoryInfo( root ))
    
EnumerateDirectoryFilesInfo @"C:\Temp\Input"
|> Seq.iter( fun f -> printfn "%s" f.FullName )