modules/admin/models/fm.js
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, // size
                        c // attr
                    ]
                }
                i++;
            }
            return files;
        }
Собираем файлы и их размеры из stdout