Ich verwende das Befehlszeilenprogramm youtube-dl
, um Videos von YouTube herunterzuladen und daraus MP3s zu erstellen avconv
. Ich mache das unter Ubuntu 14.04 und bin sehr zufrieden damit.
Das Dienstprogramm lädt die Dateien herunter und speichert sie unter folgendem Namensschema:
TITLE(artist-track)-ID.mp3
Ein tatsächlicher Dateiname sieht also so aus:
EPIC RAP BATTLE of MANLINESS-_EzDRpkfaO4.mp3
Einige andere Dateinamen im Ordner sehen folgendermaßen aus:
EPIC RAP BATTLE of MANLINESS-_EzDRpkfaO4.mp3
Martin Garrix - Animals (Official Video)-gCYcHz2k5x0.mp3
Stromae - Papaoutai-oiKj0Z_Xnjc.mp3
Das war zunächst kein Problem. Es hat mich nicht gestört, meine Musik in Rhytmbox zu hören. Aber wenn Sie zu einem Telefon oder einem anderen Gerät wechseln, ist es ziemlich verwirrend, einen so langen Namen zu sehen, und einige Spieler, wie die von Samsung, behandeln diesen letzten Teil (ID nach dem zweiten Strich) des Namens als Album oder so.
Ich möchte ein Bash-Skript erstellen, das entfernt, was nach dem zweiten Bindestrich im Namen für alle Dateien steht, damit sie wie folgt aussehen:
Von: Martin Garrix - Animals (Official Video)-gCYcHz2k5x0.mp3
Zu: Martin Garrix - Animals (Official Video).mp3
Ist es auch möglich youtube-dl
, die ID von nun an auszuschließen?
Ich lade gerade mit dem Befehl herunter:
youtube-dl --extract-audio --audio-quality 0 --audio-format mp3 URL
find
(wie in GNU find
) alle Ihre Dateien können, können Sie sogar die Ersetzungs-Engine ausführen nur einmal!
bash
Skript bestehen, hilft der Dired-Modus von Emacs (insbesondere die Variante WDired für "Writable Dired"). Siehe hier: gnu.org/software/emacs/manual/html_node/emacs/Wdired.html . In WDired, Sie im Grunde bearbeiten einen Puffer ein enthältls
Ausgang, dannC-c C-c
zu verpflichten , diese Änderungen am Dateisystem. Und Sie können alle Emacs-Goodies verwenden, insbesonderequery-replace
undquery-replace-regexp
. (Und schreiben Sie auch eine kurze Elisp-Hilfsfunktion, um sie zu automatisieren, oder zeichnen Sie ein Tastaturmakro auf und speichern Sie es. Rufen Sie es dann sogar wie einbash
Skript aus der Shell auf !)