Size: a a a

2020 July 09

зк

захар который... in pro.lua
Snusmumriken
Есть ли нелатинские буквы в путях? Это под виндовсом?
Да, кирилица возможна.  Линупс
источник

S

Snusmumriken in pro.lua
Под линупсом os.rename прокнет. Но вот содержимое директории придётся получать сторонними путями.
источник

S

Snusmumriken in pro.lua
Ещё: это luajit?
источник

_

_, _ in pro.lua
UsernameAK
на баше определить настоящее расширение делается в одну строчку
в одну команду скорее с полупинка
источник

_

_, _ in pro.lua
захар который
Привет, мир!

Помогите накатать функцию, которая бы переименовывала все файлы в каталоге, в соответствии со следующими критериями:

— преобразовать все имена файлов в нижний регистр;
— заменить пробелы на нижнее подчёркивание;
— взять из прежнего имени диапазон символов (например, только символы с 3-го по 13-й);
— исключить определённые слова из имени (например если встречаются слова «orange», «green», «cyan»);
— добавить к имени слово;
— определить настоящее расширение (если файл подписан как *.bmp, когда на самом деле он является *.tiff);
— добавить в конец имени дату (в формате: год_месяц_день час-минута-секунда);
— добавить в конец имени счётчик.

Наверняка на этот случай должны быть какие-то готовые решения?
бежиш и качаешь msys2/wsl если винда
источник

_

_, _ in pro.lua
хотя с всл не знаю, не пробовал
источник

зк

захар который... in pro.lua
Snusmumriken
Ещё: это luajit?
вот не слишком я это понимаю.

Общая картина — файловый менеджер Double Commander, который использует библиотеку liblua5.1.so
источник

U

UsernameAK in pro.lua
захар который
вот не слишком я это понимаю.

Общая картина — файловый менеджер Double Commander, который использует библиотеку liblua5.1.so
то есть таки под прыщами?
источник

зк

захар который... in pro.lua
UsernameAK
то есть таки под прыщами?
)) А енто как?
источник

U

UsernameAK in pro.lua
захар который
)) А енто как?
прыщи == линупс
источник

S

Snusmumriken in pro.lua
— преобразовать все имена файлов в нижний регистр;
lower работает только для латиницы.
local dir, file, fmt = path:match("(.*/)(.*)(%..*)"):lower()

— заменить пробелы на нижнее подчёркивание;
file = file:gsub("%s+", "_")

— взять из прежнего имени диапазон символов (например, только символы с 3-го по 13-й);
Если есть не-ascii — придётся подгрести либу utf8.
file = file:sub(3, 13)

— исключить определённые слова из имени (например если встречаются слова «orange», «green», «cyan»);
list = {orange = "", green = "", cyan = ""}
file = file:gsub("%w+", list)

— добавить к имени слово;
file = file .. "_myword"

— определить настоящее расширение (если файл подписан как *.bmp, когда на самом деле он является *.tiff);
Никак. Точнее через задницу, анализировать содержимое файла по сигнатурам.

— добавить в конец имени дату (в формате: год_месяц_день час-минута-секунда);
file = file .. "_" .. os.date("%y_%m_%d %H-%M-%S", os.time())

— добавить в конец имени счётчик.
file = file .. i

os.rename(path, dir .. file .. fmt)
источник

зк

захар который... in pro.lua
Snusmumriken
— преобразовать все имена файлов в нижний регистр;
lower работает только для латиницы.
local dir, file, fmt = path:match("(.*/)(.*)(%..*)"):lower()

— заменить пробелы на нижнее подчёркивание;
file = file:gsub("%s+", "_")

— взять из прежнего имени диапазон символов (например, только символы с 3-го по 13-й);
Если есть не-ascii — придётся подгрести либу utf8.
file = file:sub(3, 13)

— исключить определённые слова из имени (например если встречаются слова «orange», «green», «cyan»);
list = {orange = "", green = "", cyan = ""}
file = file:gsub("%w+", list)

— добавить к имени слово;
file = file .. "_myword"

— определить настоящее расширение (если файл подписан как *.bmp, когда на самом деле он является *.tiff);
Никак. Точнее через задницу, анализировать содержимое файла по сигнатурам.

— добавить в конец имени дату (в формате: год_месяц_день час-минута-секунда);
file = file .. "_" .. os.date("%y_%m_%d %H-%M-%S", os.time())

— добавить в конец имени счётчик.
file = file .. i

os.rename(path, dir .. file .. fmt)
ооо! Класс!  Спасибо!  Буду разбираться!
источник

S

Snusmumriken in pro.lua
Snusmumriken
— преобразовать все имена файлов в нижний регистр;
lower работает только для латиницы.
local dir, file, fmt = path:match("(.*/)(.*)(%..*)"):lower()

— заменить пробелы на нижнее подчёркивание;
file = file:gsub("%s+", "_")

— взять из прежнего имени диапазон символов (например, только символы с 3-го по 13-й);
Если есть не-ascii — придётся подгрести либу utf8.
file = file:sub(3, 13)

— исключить определённые слова из имени (например если встречаются слова «orange», «green», «cyan»);
list = {orange = "", green = "", cyan = ""}
file = file:gsub("%w+", list)

— добавить к имени слово;
file = file .. "_myword"

— определить настоящее расширение (если файл подписан как *.bmp, когда на самом деле он является *.tiff);
Никак. Точнее через задницу, анализировать содержимое файла по сигнатурам.

— добавить в конец имени дату (в формате: год_месяц_день час-минута-секунда);
file = file .. "_" .. os.date("%y_%m_%d %H-%M-%S", os.time())

— добавить в конец имени счётчик.
file = file .. i

os.rename(path, dir .. file .. fmt)
Первая регулярка делает вот так. То есть с двойными форматами используется только верхний. Если путь не полный (там только имя файла) или отсутствует формат — оно сломается, так что используй только на полных путях.
источник

f

fgntfg in pro.lua
Snusmumriken
— преобразовать все имена файлов в нижний регистр;
lower работает только для латиницы.
local dir, file, fmt = path:match("(.*/)(.*)(%..*)"):lower()

— заменить пробелы на нижнее подчёркивание;
file = file:gsub("%s+", "_")

— взять из прежнего имени диапазон символов (например, только символы с 3-го по 13-й);
Если есть не-ascii — придётся подгрести либу utf8.
file = file:sub(3, 13)

— исключить определённые слова из имени (например если встречаются слова «orange», «green», «cyan»);
list = {orange = "", green = "", cyan = ""}
file = file:gsub("%w+", list)

— добавить к имени слово;
file = file .. "_myword"

— определить настоящее расширение (если файл подписан как *.bmp, когда на самом деле он является *.tiff);
Никак. Точнее через задницу, анализировать содержимое файла по сигнатурам.

— добавить в конец имени дату (в формате: год_месяц_день час-минута-секунда);
file = file .. "_" .. os.date("%y_%m_%d %H-%M-%S", os.time())

— добавить в конец имени счётчик.
file = file .. i

os.rename(path, dir .. file .. fmt)
надо в один gsub все сделать
источник

S

Snusmumriken in pro.lua
Можно но лень.
источник

S

Snusmumriken in pro.lua
Эффективнее цепочкой. Если что-то сломается — будет понятно где именно.
источник

S

Snusmumriken in pro.lua
Мне как раз нравится луёвый подход, что мы спокойно цепочим что хотим.
источник

f

fgntfg in pro.lua
задания на regexp предполагают нечитаемый regexp
источник

S

Snusmumriken in pro.lua
Шо, слишком читаемо? Ща усложню ))
источник

f

fgntfg in pro.lua
источник