Как удалить повторяющееся слово / символ и что после него из имен файлов нескольких файлов? - PullRequest
0 голосов
/ 04 июня 2019

У меня есть несколько папок с видеофайлами, где из-за используемого мной менеджера загрузок все они названы в следующем формате "FILENAME.mp4; filename = FILENAME.mp4" Все, что я пытался сделать, это удалитьвсе после (и включая) ".mp4; имя файла".Однако я не нашел способа сделать это.

Я пробовал какое-то бесплатное программное обеспечение (например, Renamer, Namechanger, Name Munger для Mac, Transnomino), но мне не удалось сделать то, что мне нужно.

Я работаю на Mac OSX 10.13.6.

Буду признателен за любую помощь в этом вопросе.

Ответы [ 2 ]

0 голосов
/ 04 июня 2019

Вы можете достичь этого с помощью терминала.Перейдите в папку, в которую вы хотите переименовать файлы, с помощью этой команды cd, например:

cd ~/Documents/Videos

и выполните эту команду, чтобы рекурсивно переименовать все файлы:

find . -iname "*.mp4;*" | sed -E 's/(\.[^\.]*)(\.mp4)(.*)/mv "\1\2\3" "\1\2"/' | sh

Эта командасохранит только FILENAME.mp4 часть из FILENAME.mp4; filename= FILENAME.mp4 имени файла

0 голосов
/ 04 июня 2019

Раньше я широко использовал инструмент переименования Windows под названием Renamer 6.0, и у него была функция «переименование шаблона» под названием «Multi change», которая могла бы справиться с этим.

В контексте этого инструмента это было бызапрашивая исходный шаблон, например %a= %b, и шаблон назначения (например, %b), все, что после = будет сохранено в переменной% b, а затем переименование файла в% b потеряет все после =

Проверьте, есть ли у вашего предпочтительного инструмента переименования аналогичное средство?

Если ваш инструмент поддерживает регулярные выражения, найдите: .*?=(.*) и замените на $1

I 'Я также подумал, что задание этого вопроса на https://unix.stackexchange.com/ может вызвать некоторую помощь в создании сценария оболочки, который будет выполнять это переименование (хотя здесь также много людей с поддержкой оболочек, один из них может увидеть это - просто это не совсем так.как хардкорный программист-у вопрос как большинство).

Если вы готовы изучать / использовать Java, это может быть еще одним хорошим способом решения проблемы.Это (на догадку) будет выглядеть примерно так:

    for (final File f : new File("C:\\temp").listFiles()) {
        if (f.isFile()) {
            string n = f.getName();
            if (n.contains("=")) {
                f.renameTo(new File(n.substring(n.indexOf("=")+1));
            }
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...