Julia中如何以特定的排序顺序对dir得到的文件列表进行排序
技术分享
发布于 2025-07-22 10:47:56
查看 1过去315天
问题现象
Julia 中如何以特定的排序顺序对 dir 得到的文件列表进行排序?
例如,先按照 DATA 后的数字排序,再按照短横线后的数字进行排序?

解决方法
在进行文件排序时,可使用 sort! 函数进行排序,传入 lt 参数可进行自定义排序方式。

1.模拟dir函数生成的文件列表,用以文件排序的输入
function generate_file_names(num_files::Int)
file_names = String[]
for _ in 1:num_files
prefix = "DATA$(rand(1:100))"
number = rand(0:10000)
file_name = "$(prefix)_$(number)_mlse.mat"
push!(file_names, file_name)
end
return file_names
end
file_names = generate_file_names(200)

2.定义一个排序规则函数
function sort_by_prefix_and_number(a::String, b::String)::Bool
function split_name(file::String)::Tuple{Int64, Int64}
m::RegexMatch = match(r"DATA(\d+)_(\d+)_", file)
return (parse(Int, m.captures[1]), parse(Int, m.captures[2]))
end
a_prefix, a_number = split_name(a)
b_prefix, b_number = split_name(b)
return a_prefix != b_prefix ? a_prefix < b_prefix : a_number < b_number
end
3.将该排序规则函数传入sort!函数中,即可实现特定规则排序
sort!(file_names,lt=sort_by_prefix_and_number)

4.查看是否正确排序
@show file_names

所属专栏:Julia语言
产品信息:Syslab科学计算环境