У меня есть куча медиа-файлов, как показано ниже:
tvshow.s01e11]Bloodlines.avi
tvshow.s01e12]suffer.avi
tvshow.s01e13]NotMe.avi
Я хотел бы переименовать их в
tvshow.s01e11.avi
tvshow.s01e12.avi
tvshow.s01e13.avi
Я пытался использовать переименование, но, очевидно, я неправильно понял синтаксис, потому что он не работает.
krename
это прекрасно. Он имеет всевозможные мощные опции и показывает вам, что он собирается сделать до того, как он это сделает. Вы даже можете использовать его для тестирования шаблонов, которые вы можете использовать в bash позже.Ответы:
Это переименует файлы. Вам нужна \ w * для обозначения любого количества буквенно-цифровых символов.
Ссылка: http://www.troubleshooters.com/codecorn/littperl/perlreg.htm#UsingSimpleWildcards
источник
rename
утилита, а не один с таким же именем из util-linux , Увидеть Вот а также ВотВ оболочке можно сделать просто:
Оболочка может создать список имен файлов с помощью обычного глобуса, и
${var%pattern}
удаляет (самый короткий) образец соответствия с конца строки в переменнойvar
, Поскольку окончательное расширение всегда.avi
Я просто удалил его с рисунком и добавил обратно. С кавычками это должно работать и с именами файлов, содержащими пробелы, напримерFancy Name for a Show.s01e01]Asdf.avi
источник
${x/]*([^.])}
должен сделать, он удаляет скобку и любое количество не точек. (хотя происходит сбой, если есть другие скобки или точки, так как он не заблокирован до конца строки)${x/]*.avi}
и просто добавил.avi
как ты. Но я также был недоволен тем, как пробелы в имени будут ломаться(`find . -name '*]*.avi'`)
, Я был рад предоставить ограниченный стандартный метод команд Unix, так как переименование - нет, но это выбивает меня из воды.Это все виды непрактично - другие ответы гораздо быстрее и короче - но ...
Вы можете использовать PowerShell! Microsoft с открытым исходным кодом это недавно и сделал это кроссплатформенным. Инструкции по загрузке и установке для вашей ОС см. В разделе раздел «Получить PowerShell» ,
Как только вы установите его, вы можете использовать этот краткий скрипт:
По сути, он проходит через каждый объект в текущем каталоге, который соответствует файлу
*]*.avi
, получает деталь перед кронштейном, прихватывает.avi
обратно на него, и назначает его в качестве нового имени.Чтобы запустить его прямо из Bash, используйте этот однолинейный полугольфорный:
Цитата избегает любезно этот ответ переполнения стека ,
(Протестировано в Bash на Ubuntu для Windows. Вероятно, есть гораздо более короткий способ сделать это с PowerShell, но я хотел показать что-то понятное людям, не знающим регулярные выражения.)
источник
У Debian есть пакет, который называется MMV который также может быть доступен в других дистрибутивах и должен быть достаточно простым для компиляции из источника, если нет Это позволяет вам написать это:
Вы можете прочитать Страница справочника Ubuntu для этой команды для более подробной информации.
источник
Это будет искать шаблон и заменить текст с помощью sed.
источник