如何读取指定目录下的所有指定后缀文件
技术分享
发布于 2025-07-22 10:47:51
查看 3过去315天
问题现象
如何读取指定目录下的所有指定后缀文件?
例如,读取 test 文件下所有以“.jl ” 后缀结尾的文件。

解决方法
- 方法一:输入以下代码,即可获取所有以 “.jl ” 后缀结尾的文件
using TyBase
cd("test")
fileList = dir(r".*.jl$")
@show fileList

- 方法二:自定义工具函数,代码如下:
function find_ext_files(dir::String, ext::String; has_root::Bool=true, key_words::String="")::Vector{String}
# dir : 获取文件的路径
# ext : 文件后缀, 如 txt 、jpg 等
# has_root : 结果是否拼接根目录, 默认为 true
# key_words : 是否只获取带关键字的特定文件后缀的文件, 默认为 ""
ext_files = String[]
for (root, _, files) in walkdir(dir)
for file in files
if endswith(file, ".$ext")
file_path::String = has_root ? joinpath(root, file) : file
if isempty(key_words)
push!(ext_files, file_path)
else
if occursin(key_words, file)
push!(ext_files, file_path)
end
end
end
end
end
return ext_files
end
工具函数使用方法:
- 默认使用(拼接根目录)
find_ext_files("test", "jl")
# 5-element Vector{String}:
# "test/c.jl"
# "test/f.jl"
# "test/test.jl"
# "test/test_1.jl"
# "test/w/t.jl"
- 带 has_root 关键字(不拼接根目录)
find_ext_files("test", "jl"; has_root=false)
# 5-element Vector{String}:
# "c.jl"
# "f.jl"
# "test.jl"
# "test_1.jl"
# "t.jl"
- 带 key_words 关键字(只获取带关键字的特定文件后缀的文件)
find_ext_files("test", "jl"; key_words="test")
# 2-element Vector{String}:
# "test/test.jl"
# "test/test_1.jl"
- 带 key_words、has_root 关键字(不拼接根目录,只获取带关键字的特定文件后缀的文件)
find_ext_files("test","jl"; key_words="test",has_root=false)
# 2-element Vector{String}:
# "test.jl"
# "test_1.jl"
所属专栏:其他
产品信息:科学计算与系统建模仿真平台MWORKS