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

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

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

  • Помогает ли родительский скрипт bash запомнить историю cd из сценария child bash?
  • Как я могу переслать уже пересылаемый ssh-ключ в tmux?
  • После небольшого изменения кода «awk» печатает заголовок и пустые строки (не повторяется заголовок)
  • Почему высокие коды выхода на Linux-оболочках (> = 256) работают не так, как ожидалось?
  • Как создать скрипт, который запускает другой скрипт в отдельном окне терминала и не ждет?
  • Как я могу достичь root после переключения с bash на zsh?
  • Убейте процесс, если он успокоится в течение определенного времени
  • Как копировать только файлы папки (включая файлы вложенных папок), но не сама папка в оболочке
  • 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 - лучшая ОС в мире.