Как получить список каталогов в Lua

Мне нужен список каталогов в LUA

Предположим, у меня есть путь к каталогу как "C: \ Program Files"

Мне нужен список всех папок по этому конкретному пути и способы поиска в любой конкретной папке в этом списке.

Пример

Требуется список всех папок в пути "C: \ Program Files"

Ниже указано имя папки по указанному выше пути

  1. test123
  2. test4567
  3. папка 123
  4. папка 456
  5. папка 456 789

    Необходимо получить указанное выше в списке, а затем необходимо искать конкретную строку, например папку 456, только в папке 456 789.

Пробовали код ниже. Что-то, чего мне не хватает ниже: -

local function Loc_Lines( str )
--
local ret= {}   -- 0 lines

while str do
    local _,_,line,tail= string.find( str, "(.-)\n(.+)" )
    table.insert( ret, line or str )
    str= tail
  Print (str)
end

return ret
end


local function Loc_ShellCommand( cmd )
--
local str= nil

    --
    local f= io.popen( cmd )    -- no command still returns a handle :(
     if f then

        str= f:read'*a'
    Print(str)
        f:close()
    end

    if str=="" then   -- take no output as a failure (we can't tell..)
    Print("hi")
        str= nil
    end

-- Remove terminating linefeed, if any (eases up one-line analysis)
--
if str then
    if string.sub( str, -1 ) == '\n' then
        str= string.sub( str, 1, -2 )
    end
end

return str
 end


 local function Loc_DirCmd( cmd )

 Print(cmd)

  local str= Loc_ShellCommand( cmd )



 return Loc_Lines(str)
 end


local function Loc_DirList( dirname )

 local ret= {}

    local lookup= {}

   local tbl= Loc_DirCmd( "dir /AD /B "..dirname )   -- only dirs

    -- Add slash to every dir line
    --
    for i,v in ipairs(tbl) do
        table.insert( ret, v..'\\' )
        lookup[v]= true
    end       


    -- Return with forward slashes
    --
    if true then
        for i=1,table.getn(ret) do
            ret[i]= string.gsub( ret[i], '\\', '/' )
     Print (ret[i])
        end
    end


   return ret
 end


 Loc_DirList("C:\\Program Files\\")
28
задан Amir 13 April 2016 в 22:29
поделиться