Я использовал 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,это описаниерасскажет вам все, что вам нужно знать. Дайте нам знать, если вы застрянете.