如何获取Lua中的目录列表 [英] How to get list of directories in Lua
问题描述
我需要一个 LUA 目录列表
I need a list of directory in LUA
假设我有一个目录路径为C:Program Files"
Suppose I have a directory path as "C:Program Files"
我需要该特定路径中所有文件夹的列表以及如何搜索该列表中的任何特定文件夹.
I need a list of all the folders in that particular path and how to search any particular folder in that list.
示例
需要路径C:Program Files"中所有文件夹的列表
Need a list of all the folder in path "C:Program Files"
以下是上述路径中的文件夹名称
Below are folder name in the above path
test123
test123
test4567
文件夹 123
文件夹 456
文件夹 456 789
folder 456 789
需要在列表中获取以上内容,然后必须仅在文件夹 456 789 中搜索特定字符串,例如文件夹 456.
Need to get the above in a list and then have to search for a particular string like folder 456 in folder 456 789 only.
已尝试以下代码.我在下面缺少的东西:-
Have Tried below code. Something I am missing below:-
local function Loc_Lines( str )
--
local ret= {} -- 0 lines
while str do
local _,_,line,tail= string.find( str, "(.-)
(.+)" )
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 ) == '
' 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\")
推荐答案
简单点,安装 lfs.然后使用以下结构来查找您需要的内容:
Take the easy way, install lfs. Then use the following constructs to find what you need:
require'lfs'
for file in lfs.dir[[C:Program Files]] do
if lfs.attributes(file,"mode") == "file" then print("found file, "..file)
elseif lfs.attributes(file,"mode")== "directory" then print("found dir, "..file," containing:")
for l in lfs.dir("C:\Program Files\"..file) do
print("",l)
end
end
end
注意反斜杠等于 [[]]
等于 "\"
,并且在 windows/中如果不在 cmd 本身上使用也是允许的(正确如果我在这一点上错了,我会告诉我).
notice that a backslash equals [[]]
equals "\"
, and that in windows / is also allowed if not used on the cmd itself (correct me if I'm wrong on this one).
这篇关于如何获取Lua中的目录列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!