Lua - Как отсортировать все найденные файлы (через LFS) по алфавиту?

Пожалуйста, не мог бы кто-нибудь помочь мне закончить мою функцию, которая может сортировать все имена файлов, которые я извлек через файловую систему Lua, поскольку я не могу этого сделать? Код ниже. (Любая помощь будет оценена)


local lfs = require "lfs" 
local json = require("json")
local tt = {}

function browseFolder(root)
    for entity in lfs.dir(root) do
        if entity~ = "." and entity~ = ".." then
        
            local fullPath=root..'/'..entity
            local mode=lfs.attributes(fullPath,"mode")
            if mode= = "file" and entity: match "%.mkv$" then
            
                table.insert(tt, { 
                    filename = entity,
                    folder = root})
                
            elseif mode= = "directory" then
                
                browseFolder(fullPath);
            end
        end
    end
end

browseFolder(".")

--print(tt)

table.sort(tt, function(a, b) return a:filename() < b:filename() end)
                
for k,d in ipairs(tt) do
    --print(d.filename)
    print(k, d.filename, d.folder)
--end   
end

И... если кто-нибудь знает способ выполнить другую функцию, которая также включает дополнительные атрибуты файла, такие как размер файла, дата создания и т. д. А затем иметь возможность сортировать по любому из них, это было бы здорово.

Почему в Python есть оператор &quot;pass&quot;?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
0
0
381
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

используйте lfs.attributes и полный путь для доступа к файлу:

local lfs = require "lfs" 
local json = require("json")
local tt = {}

function browseFolder(root)
    for entity in lfs.dir(root) do
        if entity~ = "." and entity~ = ".." then
        
            local fullPath=root..'/'..entity
            local mode=lfs.attributes(fullPath,"mode")
            if mode= = "file" and entity: match "%.*$" then -- all files
            
                table.insert(tt, { 
                    filename = entity,
                    folder = root,
                    date_ch = lfs.attributes(root .. '//'.. entity, "change") 
                    })
                print(entity,root)
            elseif mode= = "directory" then
                
                browseFolder(fullPath);
            end
        end
    end
end

browseFolder(".")


table.sort(tt, function(a, b) return a.date_ch < b.date_ch end) -- sort by date of change
                
for k,d in pairs(tt) do
    print(k, d.filename, os.date("%c",d.date_ch) , d.folder)
end

и вместо a:filename() < b:filename() используйте a.filename < b.filename

Другие вопросы по теме