Cambie el nombre del archivo y encapsule el último número X de caracteres, antes de la extensión, entre corchetes

Cambie el nombre del archivo y encapsule el último número X de caracteres, antes de la extensión, entre corchetes

He estado usando youtube-dl para descargar el canal completo de un youtuber con fines de archivo. Había estado usando el patrón de nomenclatura predeterminado para nombrar los videos que usa el título del video, luego un guión, la identificación del video de 11 caracteres y, finalmente, la extensión del archivo.

p.ej

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

Para futuras descargas, eliminé el guión y coloqué la identificación del video entre corchetes. El problema es que ya tengo cientos de videos que siguen el antiguo esquema de nombres y no quiero desperdiciar ancho de banda al volver a descargarlos solo para obtener el nuevo esquema de nombres.

¿Cómo puedo cambiar el nombre de archivos de diferente longitud para que se coloque "]" antes de ".mp4" y se escriban 11 espacios/caracteres antes de que "].mp4" se reemplace con "["?

p.ej

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

[EDITAR] Olvidé especificar que preferiría una solución que funcione en Linux y/o FreeNAS/BSD.

Respuesta1

En Linux, puedes usarrebautizarcomando así:

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

Explicación de expresiones regulares:

-           # 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

Reemplazo:

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

Si los 11 caracteres no pueden ser caracteres de palabra, utilice lo siguiente:

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

Donde .coincide con cualquier carácter excepto nueva línea.

Respuesta2

Si no le importa utilizar una herramienta de terceros, que recomendaría para un uso único, recomendaríacambio de nombre avanzado, es portátil y gratuito.

De lo contrario puedes usar powershell,esta descripciónte dice todo lo que necesitas saber. Háganos saber si se queda atascado.

información relacionada