Eliminar patrón de nombres de archivos

Eliminar patrón de nombres de archivos

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" 3CUz4M3M1r8dará como resultado Ton Steine Scherben - Alles verndert sich.mp4.

Respuesta3

Usando bashla 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 extglobfunción de expansión de parámetros y de bash.

  • inicontendrá la porción inicial descartando la porción del último -en adelante

  • extcontendrá la extensión, por ejemplo ogg,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

ingrese la descripción de la imagen aquí

información relacionada