Во-первых, мы можем создать 3 массива-подобные таблицы: одну для защищенных файлов (ту, которую вы предоставили), другую для вывода списка всех файлов в каталоге и последнюю для выбора файлов, которые мы будем удалять.
local protected = {"init.lua", "client.lua", "config.htm", "server.lua", "update.lua"}
local found = {}
local delete = {}
Далее мы соберем содержимое каталога:
for name in io.popen([[dir "" /b]]):lines() do
table.insert(found, name)
end
Стоит отметить, что он также получит папки, но здесь это не имеет значения, так как мы выиграли ' удалить их все равно не удастся.
Теперь с помощью простой функции и for-l oop мы получим значения от found
до delete
, за исключением значений в protected
:
local function contains(t, v)
for index, value in ipairs(t) do
if value == v then
return true
end
end
return false
end
for _, value in ipairs(found) do
if not contains(protected, value) then
table.insert(delete, value)
end
end
Теперь мы удаляем файлы в delete
for _, filename in ipairs(delete) do
print("Deleting "..filename.." (unless it is a folder)")
os.remove(filename) -- this function is simply unable to delete folders
end
И это все. Должен признать, я запускаю его на Windows, поэтому я использовал команду dir
. Там, где вы хотите запустить его, может потребоваться изменить его на ls
(с io.popen([[dir "" /b]]):lines()
на io.popen([[ls "" /b]]):lines()
).