Переименуйте файл и заключите последние X символов перед расширением в квадратные скобки.

Переименуйте файл и заключите последние X символов перед расширением в квадратные скобки.

Я использовал youtube-dl для загрузки всего канала ютубера в архивных целях. Я использовал шаблон именования по умолчанию для именования видео, который использует название видео, затем дефис, 11-значный идентификатор видео и, наконец, расширение файла.

например

title of the video - (an example)-oHg5SJYRHA0.mp4

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

Как переименовать файлы разной длины так, чтобы перед «.mp4» был поставлен знак «]», а дефис, а 11 пробелов/символов перед «].mp4» были заменены на «[»?

например

title of the video - (an example)[oHg5SJYRHA0].mp4

[ПРАВКА] Я забыл указать, что предпочел бы решение, которое будет работать на Linux и/или FreeNAS/BSD.

решение1

В Linux вы можете использоватьпереименоватькоманда вроде этой:

rename 's/-\w{11}(?=\.mp4$)/[$&]/' *.mp4

Объяснение регулярного выражения:

-           # a hyphen
\w{11}      # 11 word characters
(?=         # positive lookahead, make sure we have after:
  \.mp4     # a dot followed by mp4
  $         # end of string
)           # end lookahead

Замена:

[           # opening square bracket
$&          # the whole match (i.e. 11 characters)
]           # closing squarre bracket

Если 11 символов могут отличаться от словесных символов, используйте следующее:

rename 's/-\K.{11}(?=\.mp4$)/[$&]/' *.mp4

Где .соответствует любому символу, кроме символа новой строки.

решение2

Если вы не против использования стороннего инструмента, который я бы рекомендовал для одноразового использования, я бы рекомендовалрасширенныйпереименование, он портативен и бесплатен.

В противном случае вы можете использовать PowerShell,это описаниерасскажет вам все, что вам нужно знать. Дайте нам знать, если вы застрянете.

Связанный контент