如何用纯Red语言(v0.6.3 CLI)存储目录文件列表?
在Red 0.6.3 CLI中纯Red实现目录文件列表存储到变量
我懂你的痛点——Red里的list-dir、ls、dir这些工具函数本质是面向控制台输出设计的,它们的核心作用就是直接把目录内容打印到CLI,并不会返回可赋值给变量的结果,所以你尝试赋值时出错是正常的。
要实现纯Red的目录列表存储,你得用read函数,这是Red标准库中专门处理文件系统读取的核心函数,完全不依赖外部系统命令,是跨平台的纯Red方案。
基础用法示例
直接读取目标目录,返回包含所有文件/子目录的块(Red中的块类型,类似数组):
; 读取当前目录的内容,存入files变量 files: read %./ ; 读取指定路径的目录,比如上级目录 parent-files: read %../
过滤特定类型的内容
如果需要只保留文件或者只保留子目录,可以结合filter和类型判断函数做进一步处理:
; 只获取目录中的文件(排除子目录) only-files: filter read %./ [file? value] ; 只获取目录中的子目录 only-dirs: filter read %./ [dir? value]
关于call方案的补充
你提到的call方法(比如call "ls")虽然能拿到目录列表,但它有明显的局限性:
- 跨平台兼容性差:Windows上需要换成
call "dir",无法一套代码跑通所有系统 - 输出是原始字符串,需要额外写代码解析成Red的结构化数据(比如块)
- 性能和稳定性不如纯Red的
read函数,还会依赖系统环境
内容的提问来源于stack exchange,提问作者Mateusz Palichleb
相关产品推荐
相关产品推荐

