
Descargué algunos archivos con youtube-dl. El nombre siempre es así.
foo - baar -PSUHDUWHDAIHDWU.ogg/mp3/...
¿Cómo puedo eliminar estas letras aleatorias (cortar el último '-*') al final de todos los archivos de una carpeta para que el nombre sea:
foo - baar.mp3/ogg/...
Intenté algo con "cambiar nombre" pero no tengo idea de qué patrón usar. Creo que debería ser algo como esto: "#-*"
Respuesta1
Con rename
, asumiendo que a .
solo aparece al final del nombre del archivo para la extensión, puede usar la siguiente expresión:
s/-[^-]*\././
Esto reemplaza un guión seguido de caracteres que no sean un guión hasta que aparezca .
, con .
, eliminando efectivamente el último guión y los caracteres que lo siguen. Úselo así:
rename -n 's/-[^-]*\././' *
Si los nombres cambiados se ven bien, ejecútelos sin -n
.
Respuesta2
En lugar de piratear reemplazando el patrón, puedes decirle a youtube-dl que no incluya estas letras aleatorias (en realidad, es una identificación de video) en el nombre del archivo final. Esto se puede hacer conplantilla de salida, por ejemplo, youtube-dl -o "%(title)s.%(ext)s" 3CUz4M3M1r8
dará como resultado Ton Steine Scherben - Alles verndert sich.mp4
.
Respuesta3
Usando bash
la expansión de parámetros:
#!/bin/bash
shopt -s extglob
for file in *(*mp3|*ogg); do
ini="${file%-*}"
ext="${file##*.}"
mv "$file" "${ini}.${ext}"
done
Aquí hemos utilizado la
extglob
función de expansión de parámetros y debash
.ini
contendrá la porción inicial descartando la porción del último-
en adelanteext
contendrá la extensión, por ejemploogg
,mp3
Prueba :
$ ls
scr.sh Ton Steine Scherben - Ich will nicht werden, was mein Alter ist-WpLfJZvnWSw.ogg
Ton Steine Scherben - Alles verändert sich-3CUz4M3M1r8.ogg Ton Steine Scherben - Keine Macht für Niemand-XtMPGhXnzWE.mp3
Ton Steine Scherben - Der Traum ist aus-WYZCovq71XE.ogg Ton Steine Scherben - Komm schlaf bei mir-Nr9V_UH04eA.mp3
Ton Steine Scherben - Feierabend-BopYtPtjlkI.ogg
$ bash scr.sh
$ ls
scr.sh Ton Steine Scherben - Ich will nicht werden, was mein Alter ist.ogg
Ton Steine Scherben - Alles verändert sich.ogg Ton Steine Scherben - Keine Macht für Niemand.mp3
Ton Steine Scherben - Der Traum ist aus.ogg Ton Steine Scherben - Komm schlaf bei mir.mp3
Ton Steine Scherben - Feierabend.ogg
Respuesta4
Guion
#!/bin/bash
# Author : Serg Kolo
# Description: script for renaming files
# for http://askubuntu.com/q/626258/295286
for file in *; do
FILENAME=$( awk -F '-' '{gsub(" ","");print $1"-"$2}' <<< "$file")
EXTENSION=$( awk -F '.' '{print $2}' <<< "$file")
mv "$file" ./"$FILENAME.$EXTENSION"
done
Resultados