function(stdout) {
            var files = {}
                ,i = 0
                ,j = 0
                ,n = 0
                ,c, fName, sz
                ,formats = [[0,0]]


                
            stdout = stdout.split('\n')
            while(stdout[i] !== null && stdout[i].substr(0,7) != '-------') {
                i++;
            }
            while(stdout[i] && j<stdout[i].length) {
                c = stdout[i].charAt(j)
                if(c != '-') {
                    n++  
                    formats[n] = [j+1, 0]
                } else {
                    formats[n][1]++    
                }
                j++;
            }
            i++
            
            n = pathName.split('/').length - 1
 
            while(stdout[i] && stdout[i].substr(0,7) != '-------') {                
                
                fName = stdout[i].substr(formats[4][0]).trim().split('/')

                if(fName[n] && !files[fName[n]]) {
                    c = stdout[i].substr(formats[1][0],formats[1][1]).trim()
                    sz = parseInt(stdout[i].substr(formats[2][0],formats[2][1]).trim())
                    
                    if(c.charAt(0) != 'D' && n == (fName.length-1)) {
                    // это файл
                        c = 'F'
                    } else {
                    // каталог
                        c = 'D'
                        sz = 0
                    }
                    files[fName[n]] =[
                        sz, // size
                        c // attr
                    ]
                }
                i++;
            }
            return files;
        }
function(stdout) {
            var files = {}
                ,i = 0
                ,j = 0
                ,n = 0
                ,c, fName, sz
                ,formats = [[0,0]]


                
            stdout = stdout.split('\n')
            while(stdout[i] !== null && stdout[i].substr(0,7) != '-------') {
                i++;
            }
            while(stdout[i] && j<stdout[i].length) {
                c = stdout[i].charAt(j)
                if(c != '-') {
                    n++  
                    formats[n] = [j+1, 0]
                } else {
                    formats[n][1]++    
                }
                j++;
            }
            i++
            
            n = pathName.split('/').length - 1
 
            while(stdout[i] && stdout[i].substr(0,7) != '-------') {                
                
                fName = stdout[i].substr(formats[4][0]).trim().split('/')

                if(fName[n] && !files[fName[n]]) {
                    c = stdout[i].substr(formats[1][0],formats[1][1]).trim()
                    sz = parseInt(stdout[i].substr(formats[2][0],formats[2][1]).trim())
                    
                    if(c.charAt(0) != 'D' && n == (fName.length-1)) {
                    
                        c = 'F'
                    } else {
                    
                        c = 'D'
                        sz = 0
                    }
                    files[fName[n]] =[
                        sz, 
                        c 
                    ]
                }
                i++;
            }
            return files;
        }
function ( stdout ) { var files = { } , i = 0 , j = 0 , n = 0 , c , fName , sz , formats = [ [ 0 , 0 ] ] stdout = stdout . split ( '\n' ) while ( stdout [ i ] !== null && stdout [ i ] . substr ( 0 , 7 ) != '-------' ) { i ++ ; } while ( stdout [ i ] && j < stdout [ i ] . length ) { c = stdout [ i ] . charAt ( j ) if ( c != '-' ) { n ++ formats [ n ] = [ j + 1 , 0 ] } else { formats [ n ] [ 1 ] ++ } j ++ ; } i ++ n = pathName . split ( '/' ) . length - 1 while ( stdout [ i ] && stdout [ i ] . substr ( 0 , 7 ) != '-------' ) { fName = stdout [ i ] . substr ( formats [ 4 ] [ 0 ] ) . trim ( ) . split ( '/' ) if ( fName [ n ] && ! files [ fName [ n ] ] ) { c = stdout [ i ] . substr ( formats [ 1 ] [ 0 ] , formats [ 1 ] [ 1 ] ) . trim ( ) sz = parseInt ( stdout [ i ] . substr ( formats [ 2 ] [ 0 ] , formats [ 2 ] [ 1 ] ) . trim ( ) ) if ( c . charAt ( 0 ) != 'D' && n == ( fName . length - 1 ) ) { // это файл c = 'F' } else { // каталог c = 'D' sz = 0 } files [ fName [ n ] ] = [ sz , // size c // attr ] } i ++ ; } return files ; }
Собираем файлы и их размеры из stdout
Собираем файлы и их размеры из stdout