The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]



"Выпуск nomenus-rex 0.4.0, утилиты для массового переименования файлов"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Выпуск nomenus-rex 0.4.0, утилиты для массового переименования файлов"  +/
Сообщение от opennews (??), 05-Апр-22, 09:19 
Доступна новая версия консольной утилиты Nomenus-rex, предназначенной для массового переименования файлов. Программа написана на языке C++ и распространяется на условиях  лицензии GPLv3. Правила для переименования настраиваются с помощью конфигурационного файла. Например:...

Подробнее: https://www.opennet.ru/opennews/art.shtml?num=56967

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения [Сортировка по времени | RSS]


1. "Выпуск nomenus-rex 0.4.0, утилиты для массового переименован..."  –2 +/
Сообщение от Аноним (1), 05-Апр-22, 09:19 
А смысл городить тысячи строк на С++, когда для каждого конкретного
случая на коленке можно смастерить что-то типа

#!/bin/sh

for dict in `ls *[0-9]`; do
dict_name=`echo $dict| sed 's/download?id=//'`
echo $dict_name.mp3
mv "$dict" $dict_name.mp3
done

Ответить | Правка | Наверх | Cообщить модератору

2. "Выпуск nomenus-rex 0.4.0, утилиты для массового переименован..."  +1 +/
Сообщение от Аноним (2), 05-Апр-22, 09:22 
у кого-то может быть аллергия на портянки
Ответить | Правка | Наверх | Cообщить модератору

12. "Выпуск nomenus-rex 0.4.0, утилиты для массового переименован..."  +/
Сообщение от ИмяХ (?), 05-Апр-22, 10:48 
Эта "портянка" в несколько раз меньше конфига в новости.
Ответить | Правка | Наверх | Cообщить модератору

30. "Выпуск nomenus-rex 0.4.0, утилиты для массового переименован..."  +/
Сообщение от Аноним (30), 06-Апр-22, 01:43 
Так у нее и функциональность меньше. И скорость работы вероятно тоже.
Ответить | Правка | Наверх | Cообщить модератору

3. "Выпуск nomenus-rex 0.4.0, утилиты для массового переименован..."  +/
Сообщение от A.Stahl (ok), 05-Апр-22, 09:25 
Я не умею красиво писать о простых вещах. Загугли "unixway". Уверен кто-то описал это лучше чем я. Кратко: хорошо иметь программы, выполняющие одну конкретную и внятную функцию, а не писать на каждый чих одноразовые велосипеды.
Ответить | Правка | К родителю #1 | Наверх | Cообщить модератору

4. "Выпуск nomenus-rex 0.4.0, утилиты для массового переименован..."  –1 +/
Сообщение от Аноним (1), 05-Апр-22, 09:45 
Ну не знаю, мне всегда казалось, что применение сочетания мелких утилит типа ls/mv/sed/awk для решения таких задач как массовое переименование и есть unixway, а не создание отдельной утилиты для каждой задачи.

Ответить | Правка | Наверх | Cообщить модератору

5. "Выпуск nomenus-rex 0.4.0, утилиты для массового переименован..."  +/
Сообщение от Аноним (5), 05-Апр-22, 09:45 
> выполняющие одну конкретную и внятную функцию
> copy_or_rename = "copy";

____

> на каждый чих одноразовые велосипеды

Ну смотри. Есть такая реальная задача. Имеем следующие файлы:

    torrents/<TORRENT_ID>/**/*.{mp4,mkv,...}

Их нужно не скопировать, а организовать на них симлинки и класть их сюда:

    videos/<VIDEO_HEIGHT_IN_PIXELS>_<FILENAME>.<EXT>

Как, если не "одноразовыми велосипедами", такое организовать? Если идти по пути "юниксвея" (на самом деле нет), то в сабж придется добавлять поддержку ffmpeg. И поддержку симлинков. А опция наверное будет называться copy_or_rename_or_symlink.

Ответить | Правка | К родителю #3 | Наверх | Cообщить модератору

6. "Выпуск nomenus-rex 0.4.0, утилиты для массового переименован..."  +/
Сообщение от Анонимemail (6), 05-Апр-22, 09:53 
> А опция наверное будет называться copy_or_rename_or_symlink

не проще разделить на три? разделяй и властвуй, как говорится

Ответить | Правка | Наверх | Cообщить модератору

7. "Выпуск nomenus-rex 0.4.0, утилиты для массового переименован..."  +/
Сообщение от A.Stahl (ok), 05-Апр-22, 09:59 
Да, программы не приспособлены для решения очень необычных задач. Тут пользователь сам по себе. Впрочем никто не запрещает создать "правило", вызывающее какую-то внешнюю утилиту как раз для таких нестандартных случаев.

>А опция наверное будет называться copy_or_rename_or_symlink.

Опция по своей сути -- enum. Если вдруг создание симлинков будет востребованой задачей, то почему нет? Просто переменная будет переименована во что-то более общее, вроде "processing_mode".

Ответить | Правка | К родителю #5 | Наверх | Cообщить модератору

10. "Выпуск nomenus-rex 0.4.0, утилиты для массового переименован..."  +/
Сообщение от Аноним (5), 05-Апр-22, 10:20 
> создать "правило", вызывающее какую-то внешнюю утилиту как раз для таких нестандартных случаев

суть в том, что правила будут занимать не меньшее число строк, чем пресловутые баш-портянки. Но зато не дадут всей гибкости скриптов. Например, забыл упомянуть, что нужно ставить симлинки не на все видео-файлы, а только на те, что НЕ называются /^proxy_\d+\.avi$/.

> processing_mode

Ну теперь программа явно выполняет не просто "одну конкретную и внятную функцию".

Ответить | Правка | Наверх | Cообщить модератору

11. "Выпуск nomenus-rex 0.4.0, утилиты для массового переименован..."  +/
Сообщение от A.Stahl (ok), 05-Апр-22, 10:29 
>будут занимать не меньшее число строк

Так суть не в количестве строк, а в их тривиальности.
Уверен что тебе будет проще написать 5 строк на русском языке, чем две на клингонско-армянском диалекте.

>Ну теперь программа явно выполняет не просто "одну конкретную и внятную функцию".

Не-а. Всё равно одну прикладную задачу. На задачи следует смотреть с точки зрения пользователя, а не сортировать по сисколлам.

Ответить | Правка | Наверх | Cообщить модератору

27. "Выпуск nomenus-rex 0.4.0, утилиты для массового переименован..."  +/
Сообщение от Аноним (2), 05-Апр-22, 19:12 
и ещё
Ответить | Правка | К родителю #7 | Наверх | Cообщить модератору

8. "Выпуск nomenus-rex 0.4.0, утилиты для массового переименован..."  +/
Сообщение от Аноним (8), 05-Апр-22, 10:01 
Конечно. Это KRename, он 1000 лет существует.
Ответить | Правка | К родителю #5 | Наверх | Cообщить модератору

9. "Выпуск nomenus-rex 0.4.0, утилиты для массового переименован..."  +/
Сообщение от Аноним (8), 05-Апр-22, 10:06 
Просто, я сомневаюсь, что это действие нужно выполнять чаще, чем никогда. А если выполнять по завершению загрузки, то однострочник уже написан в любом случае (хотя это и не выглядит очень удобным, но у каждого свои тараканы, я тоже добавляю высоту перед расширением, чтобы отличать файлы с одним именем и разным содержимым).
Ответить | Правка | Наверх | Cообщить модератору

26. "Выпуск nomenus-rex 0.4.0, утилиты для массового переименован..."  +/
Сообщение от Аноним (2), 05-Апр-22, 19:11 
минус за тупой треп
Ответить | Правка | К родителю #3 | Наверх | Cообщить модератору

14. "Выпуск nomenus-rex 0.4.0, утилиты для массового переименован..."  +/
Сообщение от Аноним (14), 05-Апр-22, 11:13 
Очевидно же, что дело в производительности. В вашем скрипте целая куча программ запускается, это создаются процессы, передаются данные. Внутри программы, которая в одном процессе делает все нужные вызовы, ничего этого не происходит.

Однако, у нас есть перл, на котором можно получить те же преимущества, не теряя простоты (может даже еще проще и короче будет). И разница в производительности уже будет не такой огромной. Для задач типа удалить охулиарды файлов частенько использую однострочники вместо конструкций на баше.

Ответить | Правка | К родителю #1 | Наверх | Cообщить модератору

13. "Выпуск nomenus-rex 0.4.0, утилиты для массового переименован..."  +2 +/
Сообщение от Аноним (13), 05-Апр-22, 11:11 
rename на перле же есть.
Ответить | Правка | Наверх | Cообщить модератору

15. "Выпуск nomenus-rex 0.4.0, утилиты для массового переименован..."  –1 +/
Сообщение от Аноним (14), 05-Апр-22, 11:16 
Программисты на сиплюсах не могут в перл.
Ответить | Правка | Наверх | Cообщить модератору

16. "Выпуск nomenus-rex 0.4.0, утилиты для массового переименован..."  +/
Сообщение от A.Stahl (ok), 05-Апр-22, 11:52 
И наоборот.
Ответить | Правка | Наверх | Cообщить модератору

23. "Выпуск nomenus-rex 0.4.0, утилиты для массового переименован..."  +/
Сообщение от CAE (ok), 05-Апр-22, 15:28 
И наоборот умеют.
Ответить | Правка | Наверх | Cообщить модератору

22. "Выпуск nomenus-rex 0.4.0, утилиты для массового переименован..."  +/
Сообщение от CAE (ok), 05-Апр-22, 15:27 
Умеют.
Ответить | Правка | К родителю #15 | Наверх | Cообщить модератору

17. "Выпуск nomenus-rex 0.4.0, утилиты для массового переименован..."  +/
Сообщение от Аноним (17), 05-Апр-22, 12:18 
если она на с++, то почему такой наркоманский формат конфига?
не проще ли использовать плейнтекст с секциями, типа
[global]
....

[rule1]

[rule2]

etc

Ответить | Правка | Наверх | Cообщить модератору

18. "Выпуск nomenus-rex 0.4.0, утилиты для массового переименован..."  +/
Сообщение от Аноним (5), 05-Апр-22, 12:21 
И кстати, название проекта неверное, должно быть rex-nominum.
Ответить | Правка | Наверх | Cообщить модератору

19. "Выпуск nomenus-rex 0.4.0, утилиты для массового переименован..."  +/
Сообщение от A.Stahl (ok), 05-Апр-22, 12:31 
С названием вышла история: изначально название было nomen (имя), но все упорно и удивлённо читали его как английское no men. Поэтому я добавил us как наиболее очевидное указание на латынь, а rex уже просто по-приколу.
Ответить | Правка | Наверх | Cообщить модератору

20. "Выпуск nomenus-rex 0.4.0, утилиты для массового переименован..."  +/
Сообщение от Аноним (20), 05-Апр-22, 12:50 
Зашел в новость с надеждой, что кто-то запилил гуй хотя бы наподобие того, что есть в Thunar, уж молчу про Doublecmd/Totalcmd. А тут изврат какой-то, смысл которого можно выразить примерно так:
for fn in *.png; do mv "$fn" "$(basename "$fn" .png)-renamed.png"; done
Допилить под задачи несложно.
Ответить | Правка | Наверх | Cообщить модератору

21. "Выпуск nomenus-rex 0.4.0, утилиты для массового переименован..."  +/
Сообщение от topin89 (ok), 05-Апр-22, 13:01 
C++ конечно странное решение, ну ладно, скорость там или просто привычка.

С программой есть другая проблема

void    RuleFilename::process(std::filesystem::path& name)
{
    result = name.stem();

    switch (mode)
    {
        case Mode::lowercase:
        {
            std::transform(result.begin(), result.end(), result.begin(), ::tolower);
        }break;
        case Mode::uppercase:
        {
            std::transform(result.begin(), result.end(), result.begin(), ::toupper);
        }break;
        case Mode::sic:
        {

        }break;
    }
}

Упор на функцию ::tolower. Эта функция есть в двух вариантах, с локалью и без, и в коде намёка на локаль нет. Добавим сюда, что у строка result -- это строка char'ов, а там или ASCII, или неопределённое поведение, которое может приводить и к вылетанию всей программы (C++ такой C++). Так что русские файлы (а так же французские, греческие, немецкие, японские и мноооого других) могут натурально повалить всю программу. А самое забавное, информация об этом есть прямо в доках к tolower на cppreference, так что автор даже беглое ознакомление не осилил.

Как проект для саморазвития и понимания что к чему -- неплохо, но не для реального использования.

Ответить | Правка | Наверх | Cообщить модератору

24. "Выпуск nomenus-rex 0.4.0, утилиты для массового переименован..."  +/
Сообщение от CAE (ok), 05-Апр-22, 15:31 
Обработка исключений - для трусов :)

Но в целом хороший разбор. Кстати, std::filesystem::path тоже имеет "приятные" подводные камни.

Ответить | Правка | Наверх | Cообщить модератору

25. "Выпуск nomenus-rex 0.4.0, утилиты для массового переименован..."  +1 +/
Сообщение от КО (?), 05-Апр-22, 19:06 
Без вменяемого гуя, эта прога очередная и никому ненужная.
Ответить | Правка | Наверх | Cообщить модератору

28. "Выпуск nomenus-rex 0.4.0, утилиты для массового переименован..."  –1 +/
Сообщение от Аноним (28), 05-Апр-22, 19:38 
Массовое переименование файлов в Thunar покрывает 99% случаев.
Ответить | Правка | Наверх | Cообщить модератору

29. "Выпуск nomenus-rex 0.4.0, утилиты для массового переименован..."  +/
Сообщение от Онаним (?), 05-Апр-22, 23:10 
Файлуха не треснет столько файлов переименовывать, чтобы разница в проиводительности с баш-портянкой стала заметной? Или там рамдиск на пару терабайт с файлами по 1 байту в инодах?
Ответить | Правка | Наверх | Cообщить модератору

31. "Выпуск nomenus-rex 0.4.0, утилиты для массового переименован..."  +/
Сообщение от InuYasha (??), 06-Апр-22, 10:12 
А теперь запилить GUI как у Flexible Renamer и будет вообще золото.
Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Спонсоры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2022 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру