
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" 3CUz4M3M1r8
ergibt Ton Steine Scherben - Alles verndert sich.mp4
.
Antwort3
Verwenden bash
der 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
extglob
und Parametererweiterungsfunktion von verwendetbash
.ini
enthält den ersten Teil und verwirft den letzten Teil-
abext
enthält die Erweiterung zBogg
,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