Как удалить определенную строку символов в имени файла?

Я разорвал несколько DVD-дисков для домашнего HTPC (plex-сервера). Некоторые имена файлов содержат нежелательные символы. Я хочу сохранить большую часть исходной строки имени файла, но исключить нежелательный текст внутри него. Вот некоторые примеры:

  • Существующее имя файла Apollo 18-1.mp4 , remove -1 Новое имя файла Apollo 18.mp4 Правило: в выбранном каталоге найдите все имена файлов, заканчивающиеся на «-1», и исключите строку символов «-1»,
  • Filename .Title1 , remove .Title1 Новое имя файла .Title1 Правило: в выбранном каталоге найдите все имена файлов, оканчивающиеся на «.Title1», и исключите строку символов «.Title1»

  • Получение пользовательского ввода из сценария, используемого как stdin для сеанса SSH
  • это поведение. * включить. и .. определено в LSB или POSIX или какой-либо другой спецификации?
  • Доступ к элементу случайного массива в ZSH
  • Разместить файл доступа ht в webroot каждого скрипта bash каталога
  • Как проверить процесс вместе с его аргументами в списке процессов?
  • Декодирование «prog> file 2> & 1"
  • Почему `grep fil *` терпит неудачу?
  • Удалить предложение автозавершения zsh
  • Печать файла с количеством жестких ссылок
  • Как автоматически запускать контейнер lxc в ssh-соединении?
  • Шебанг, начинающийся с `//`?
  • Печать цветного текста с использованием скрипта
  • One Solution collect form web for “Как удалить определенную строку символов в имени файла?”

    С zmv zsh , экстраполируя требования из этих двух примеров:

     autoload zmv # best in ~/.zshrc zmv '(*)(.Title<->|-<->).(mp4|avi)' '$1.$3' 

    <-> – любая последовательность десятичных цифр. (одна форма <xy> где не указаны ни границы). Если вы хотите только .Title1 и -1 и любое расширение, вы всегда можете изменить его на:

     zmv '(*)(.Title|-)1(.[^.]##)' '$1$3' 

    [^.]## соответствует одному или нескольким неточечным символам.

    Linux и Unix - лучшая ОС в мире.