当前位置: 首页 > news >正文

lua 获取指定路径下的所有文件夹

一、io.popen 函数获取

  io.popen 是 Lua 中的一个函数,它允许你执行一个外部命令并将命令的输出作为流处理。如果你想在 Lua 中通过 io.popen 执行 dir 命令(linux 命令是ls )来获取指定文件夹下的所有文件及其路径,你可以构造一个适用于 Windows 环境下的 dir 命令,并通过 io.popen 执行这个命令。

-- 在 Lua 中调用 dir 命令并获取输出
local handle = io.popen('dir /b /s "C:\\path\\to\\your\\folder\\"')
local files = {}
for file in handle:lines() dofiles[#files + 1] = file
end
handle:close()-- 现在 'files' 数组包含了文件夹下所有文件的完整路径

这里的 /b 参数表示简洁格式(只显示文件名),而 /s 表示包括所有子目录的内容。请注意,你需要将 "C:\\path\\to\\your\\folder\\" 替换为你要查找的实际文件夹路径。

如果你是在非 Windows 系统下,比如 Unix/Linux 系统,那么应使用 ls 或 find 命令代替 dir

-- 在 Unix/Linux 系统中获取文件夹及其子文件夹下的所有文件
local handle = io.popen('find "path/to/your/folder/" -type f')
-- ... 同样的处理逻辑 ...

在这个例子中,find 命令用于查找指定目录及其子目录下所有的普通文件 (-type f)。

二、使用lfs(LuaFileSystem)库来获取

local lfs = require "lfs"function listFolders(path)local folders = {}local attr = lfs.attributes(path)if attr.mode == "directory" thentable.insert(folders, path)for file in lfs.dir(path) doif file ~= "." and file ~= ".." thenlocal f = path..'/'..filelocal attr = lfs.attributes(f)if attr.mode == "directory" thenlistFolders(f)endendendendreturn folders
end-- 使用示例
local path = "/your/specified/path"
local folders = listFolders(path)for _, folder in ipairs(folders) doprint(folder)
end

确保你已经安装了lfs库,如果没有安装,你可以通过LuaRocks来安装它

luarocks install luafilesystem

这段代码会打印出指定路径下所有的文件夹路径。如果你只想获取直接子文件夹,可以在listFolders函数中去掉对lfs.dir的递归调用。

相关文章:

  • 批量删除 rabbitmq中随机队列
  • c++部分题
  • PCL点云处理之最小中值平方(Lmeds法)拟合平面(二百三十四)
  • 鸿蒙OS开发实例:【手撸服务卡片】
  • 【Linux】详解进程程序替换
  • 基于前端技术实现的全面预算编制系统
  • 利用RWKV-Runner初步感受一下ai的世界
  • Linux的学习之路:3、基础指令(2)
  • SpringBoot集成WebSocket(实时消息推送)
  • PL/SQL的词法单元
  • ida调试技巧-通过修改zf寄存器的值绕过简单反调试
  • Linux manim安装
  • 幻兽帕鲁服务器价格太卷了,4核16G游戏联机服务器价格24元
  • String类相关oj练习
  • amazon中sns的使用
  • ➹使用webpack配置多页面应用(MPA)
  • CoolViewPager:即刻刷新,自定义边缘效果颜色,双向自动循环,内置垂直切换效果,想要的都在这里...
  • Django 博客开发教程 8 - 博客文章详情页
  • java第三方包学习之lombok
  • PaddlePaddle-GitHub的正确打开姿势
  • python 装饰器(一)
  • RxJS: 简单入门
  • spring security oauth2 password授权模式
  • 编写高质量JavaScript代码之并发
  • 搞机器学习要哪些技能
  • 前端学习笔记之原型——一张图说明`prototype`和`__proto__`的区别
  • 如何优雅地使用 Sublime Text
  • 深入 Nginx 之配置篇
  • 思考 CSS 架构
  • 详解NodeJs流之一
  • UI设计初学者应该如何入门?
  • 阿里云IoT边缘计算助力企业零改造实现远程运维 ...
  • ​2020 年大前端技术趋势解读
  • ​LeetCode解法汇总2696. 删除子串后的字符串最小长度
  • #Lua:Lua调用C++生成的DLL库
  • (10)工业界推荐系统-小红书推荐场景及内部实践【排序模型的特征】
  • (2021|NIPS,扩散,无条件分数估计,条件分数估计)无分类器引导扩散
  • (ros//EnvironmentVariables)ros环境变量
  • (附程序)AD采集中的10种经典软件滤波程序优缺点分析
  • (附源码)python房屋租赁管理系统 毕业设计 745613
  • (附源码)spring boot北京冬奥会志愿者报名系统 毕业设计 150947
  • (一)基于IDEA的JAVA基础1
  • (转) SpringBoot:使用spring-boot-devtools进行热部署以及不生效的问题解决
  • (转)ObjectiveC 深浅拷贝学习
  • .NET 8 中引入新的 IHostedLifecycleService 接口 实现定时任务
  • .NET C#版本和.NET版本以及VS版本的对应关系
  • .net core webapi Startup 注入ConfigurePrimaryHttpMessageHandler
  • .NET 应用启用与禁用自动生成绑定重定向 (bindingRedirect),解决不同版本 dll 的依赖问题
  • @autowired注解作用_Spring Boot进阶教程——注解大全(建议收藏!)
  • @WebService和@WebMethod注解的用法
  • [ Algorithm ] N次方算法 N Square 动态规划解决
  • [ vulhub漏洞复现篇 ] GhostScript 沙箱绕过(任意命令执行)漏洞CVE-2019-6116
  • [] 与 [[]], -gt 与 > 的比较
  • [2544]最短路 (两种算法)(HDU)
  • [Android] 240204批量生成联系人,短信,通话记录的APK