Namensmuster aus Dateien löschen

Namensmuster aus Dateien löschen

Ich habe einige Dateien mit youtube-dl heruntergeladen. Der Name ist immer so

foo - baar -PSUHDUWHDAIHDWU.ogg/mp3/...

Wie kann ich diese zufälligen Buchstaben (das letzte '-*' abschneiden) am Ende aus allen Dateien eines Ordners entfernen, sodass der Name lautet:

foo - baar.mp3/ogg/...

Ich habe es mit "Umbenennen" versucht, aber ich habe keine Ahnung, welches Muster ich verwenden soll. Ich denke, es sollte so etwas sein: "#-*"

Antwort1

Mit können Sie rename, vorausgesetzt, dass ein .nur am Ende des Dateinamens für die Erweiterung vorkommt, den folgenden Ausdruck verwenden:

s/-[^-]*\././

Dies ersetzt einen Bindestrich, auf den andere Zeichen als ein Bindestrich folgen, bis ein ., durch ., wodurch der letzte Bindestrich und die darauf folgenden Zeichen effektiv gelöscht werden. Verwenden Sie es folgendermaßen:

rename -n 's/-[^-]*\././' *

Wenn die geänderten Namen in Ordnung aussehen, führen Sie sie ohne aus -n.

Antwort2

Anstatt mit dem Ersetzen von Mustern zu hacken, können Sie youtube-dl einfach sagen, diese zufälligen Buchstaben (das ist eigentlich eine Video-ID) nicht in den endgültigen Dateinamen aufzunehmen. Dies kann mitAusgabevorlage, zB youtube-dl -o "%(title)s.%(ext)s" 3CUz4M3M1r8ergibt Ton Steine Scherben - Alles verndert sich.mp4.

Antwort3

Verwenden bashder Parametererweiterung:

#!/bin/bash
shopt -s extglob
for file in *(*mp3|*ogg); do
    ini="${file%-*}"
    ext="${file##*.}"
    mv "$file" "${ini}.${ext}"
done
  • Hier haben wir die extglobund Parametererweiterungsfunktion von verwendet bash.

  • inienthält den ersten Teil und verwirft den letzten Teil -ab

  • extenthält die Erweiterung zB ogg,mp3

Prüfen :

$ 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

Antwort4

Skript

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

Ergebnisse

Bildbeschreibung hier eingeben

verwandte Informationen