>>>> ' This is the standard >>>> ' total 4696 >>>> ' drw-rw-rw- 1 user group 0 Feb 6 15:46 . >>>> ' drw-rw-rw- 1 user group 0 Feb 6 15:46 .. >>>> ' -rw-rw-rw- 1 user group 4825 May 3 2010 Account.png >>>> ' -rw-rw-rw- 1 user group 5242 May 3 2010 Administration.png >>>> ' -rw-rw-rw- 1 user group 4117 Apr 17 2011 Agent.png >>>> ' -rw-rw-rw- 1 user group 1402 Dec 30 2005 AmazonCA.gif >>>> ' -rw-rw-r-- 1 wliclus weblogic 308121 Jun 1 2011 tlv_01_jackk_2011615315_1185655_001_23327701.zip >>>> >>>> ' This is also another format we have to support >>>> ' -r-xr-xr-x 1 owner group 78145990 Nov 4 2011 101.zip >>>> ' -r-xr-xr-x 1 owner group 35492 Apr 14 2011 20110414.40E >>>> ' -r-xr-xr-x 1 owner group 33583 Apr 14 2011 20110414.421 >>>> ' -r-xr-xr-x 1 owner group 40815 Apr 14 2011 20110414.483 >>>> ' -r-xr-xr-x 1 owner group 24836 Apr 14 2011 20110414.ARC >>>> ' -r-xr-xr-x 1 owner group 4737 May 5 2011 4A16PBE1.txt >>>> ' -r-xr-xr-x 1 owner group 4737 Jan 18 13:50 4A17A7B1.txt >>>>>>>>
>>>> ' If this is a file >>>> If lcLine.StartsWith("-") Then >>>> >>>> ' Get the character at position 42 >>>> lcCharacter = Mid(lcLine, 42, 1) >>>> >>>> ' If this is a space >>>> If lcCharacter = " " Then >>>> lcFile = Mid(lcLine, 56) >>>> lnSize = Val(Mid(lcLine, 34, 8)) >>>> lcDate = Mid(lcLine, 43, 12) >>>> Else >>>> lcFile = Mid(lcLine, 60) >>>> lnSize = Val(Mid(lcLine, 34, 14)) >>>> lcDate = Mid(lcLine, 47, 12) >>>> End If >>>>>>>>
Imports System.Collections.Generic >>>Imports System.Linq >>> >>>Namespace ConsoleApplication5 >>> Class Program >>> Private Shared Sub Main(args As String()) >>> Dim typeA As New List(Of String)() From { _ >>> " drw-rw-rw- 1 user group 0 Feb 6 15:46 .", _ >>> " drw-rw-rw- 1 user group 0 Feb 6 15:46 ..", _ >>> " -rw-rw-rw- 1 user group 4825 May 3 2010 Account.png", _ >>> " -rw-rw-rw- 1 user group 5242 May 3 2010 Administration.png", _ >>> " -rw-rw-rw- 1 user group 4117 Apr 17 2011 Agent.png", _ >>> " -rw-rw-rw- 1 user group 1402 Dec 30 2005 AmazonCA.gif", _ >>> " -rw-rw-r-- 1 wliclus weblogic 308121 Jun 1 2011 tlv_01_jackk_2011615315_1185655_001_23327701.zip", _ >>> " -r-xr-xr-x 1 owner group 78145990 Nov 4 2011 101.zip", _ >>> " -r-xr-xr-x 1 owner group 35492 Apr 14 2011 20110414.40E", _ >>> " -r-xr-xr-x 1 owner group 33583 Apr 14 2011 20110414.421", _ >>> " -r-xr-xr-x 1 owner group 40815 Apr 14 2011 20110414.483", _ >>> " -r-xr-xr-x 1 owner group 24836 Apr 14 2011 20110414.ARC", _ >>> " -r-xr-xr-x 1 owner group 4737 May 5 2011 4A16PBE1.txt", _ >>> " -r-xr-xr-x 1 owner group 4737 Jan 18 13:50 4A17A7B1.txt" _ >>> } >>> >>> Dim result As IEnumerable(Of FTPInfo) = typeA.[Select](Function(x) >>> Dim line As String() = DirectCast(x, String).Split(DirectCast(Nothing, Char()), StringSplitOptions.RemoveEmptyEntries) >>> Return New FTPInfo() With { _ >>> Key .File = line(8), _ >>> Key .Size = line(4), _ >>> Key .Month = line(5), _ >>> Key .Day = line(6), _ >>> Key .YearOrTime = line(7) _ >>> } >>> >>>End Function) >>> End Sub >>> End Class >>> Public Structure FTPInfo >>> Public File As String >>> Public Size As String >>> Public Month As String >>> Public Day As String >>> Public YearOrTime As String >>> End Structure >>>End NamespaceDisclaimer: VB auto-converted from C#.....
>>string pattern = @"^(?<Permissions>\S+)\s+(?<Links>\d+)\s+(?<User>\w+)\s+(?<Group>\w+)\s+(?<FileSize>\d+)\s+(?<Month>\w+)\s+(?<Day>\d+)\s+((?<Year>\d{4})|(?<Time>\d+:\d+(:\d+)?))\s+(?<FileName>.+)$"; >>>>
>>string[] lines = >> { @"drw-rw-rw- 1 user group 0 Feb 6 15:46 .", >> @"drw-rw-rw- 1 user group 0 Feb 6 15:46 ..", >> @"-rw-rw-rw- 1 user group 4825 May 3 2010 Account.png", >> @"-rw-rw-rw- 1 user group 5242 May 3 2010 Administration.png", >> @"-rw-rw-rw- 1 user group 4117 Apr 17 2011 Agent.png", >> @"-rw-rw-rw- 1 user group 1402 Dec 30 2005 AmazonCA.gif", >> @"-rw-rw-r-- 1 wliclus weblogic 308121 Jun 1 2011 tlv_01_jackk_2011615315_1185655_001_23327701.zip", >> @"-r-xr-xr-x 1 owner group 78145990 Nov 4 2011 101.zip", >> @"-r-xr-xr-x 1 owner group 35492 Apr 14 2011 20110414.40E", >> @"-r-xr-xr-x 1 owner group 33583 Apr 14 2011 20110414.421", >> @"-r-xr-xr-x 1 owner group 40815 Apr 14 2011 20110414.483", >> @"-r-xr-xr-x 1 owner group 24836 Apr 14 2011 20110414.ARC", >> @"-r-xr-xr-x 1 owner group 4737 May 5 2011 4A16PBE1.txt", >> @"-r-xr-xr-x 1 owner group 4737 Jan 18 13:50 4A17A7B1.txt", >> @"dr-xr-xr-x 1 owner group 0 Jan 18 13:50 Program Files or something else" >> }; >>>>
IEnumerable<FTPInfo> result = typeA.Select(x => > { > string[] line = ((string)x).Split((char[])null, StringSplitOptions.RemoveEmptyEntries); > string filename = string.Empty; > line.Skip(8).Select(xx => filename = filename + " " + xx).Last(); > return new FTPInfo > { > File = filename, > Size = line[4], > Month = line[5], > Day = line[6], > YearOrTime = line[7] > }; > });I see two little problems remain - sorry
@"dr-xr-xr-x 1 owner group 0 Jan 18 13:50 Program Files or something else "