[gelöst] Wert einer Variable ab einer bestimmten Stelle

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
shakky4711
Beiträge: 215
Registriert: 09.09.2009 13:33:17

[gelöst] Wert einer Variable ab einer bestimmten Stelle

Beitrag von shakky4711 » 14.04.2012 17:20:40

Hallo,

ich bin gerade dabei ein Script zu schreiben was mir alle FLAC Dateien in einem Verzeichnis mittels SHNTOOL zusammenfügt und die Metadaten die in der ersten Datei sind in die neue Gesamtdatei überträgt.

Alle einzelnen Flac Dateien beginnen immer mit einer zweistelligen Zahl

01_-_die_erste.flac
02_-_die_zweite.flac

Shntool erzeugt eine Datei mit dem Namen joined.flac.

Das hier ist das momentane Werk, bitte liebe Profis, zerreisst mich nicht in der Luft

Code: Alles auswählen

#!/bin/bash

for a in 01_*.flac
do
shntool join -o flac *.flac
metaflac --export-tags-to=temp $a
metaflac --preserve-modtime --no-utf8-convert --import-tags-from=temp joined.flac
metaflac --preserve-modtime --no-utf8-convert --remove-tag=TRACKTOTAL joined.flac

mv joined.flac JOINED_$a
rm temp
done
Die neue Datei heisst somit JOINED_01_-_die_erste.flac

Ich suche nun nach einer Lösung das Sript so umzustellen dass der in $a gespeicherte Name erst ab der sechsten Stelle für den neuen Dateinamen verwendet werden soll, in diesem Beispiel dann "die_erste.flac"

Ich habe es einfach nicht hinbekommen, kann mir bitte jemand weiterhelfen?

Danke und Gruß
Shakky
Zuletzt geändert von shakky4711 am 14.04.2012 18:03:14, insgesamt 1-mal geändert.

yeti

Re: Wert einer Variable ab einer bestimmten Stelle

Beitrag von yeti » 14.04.2012 17:33:40

Code: Alles auswählen

$ a=JOINED_01_-_die_erste.flac ; echo ${a:7}
01_-_die_erste.flac
$ echo ${a#*_-_}
die_erste.flac

shakky4711
Beiträge: 215
Registriert: 09.09.2009 13:33:17

Re: [gelöst] Wert einer Variable ab einer bestimmten Stelle

Beitrag von shakky4711 » 14.04.2012 18:05:11

Super, vielen Dank :-)

Beide Varianten funktionieren perfekt, hier nochmal das Endergebnis

Code: Alles auswählen

#!/bin/bash
# Dieses Script führt alle FLAC Dateien im aktuellen Verzeichnis zusammen,
# kopiert die Metadaten vom ersten Titel in die neue Datei, und benennt die
# Gesamtdatei mit dem Namen der ersten Datei ab der 6. Stelle um

for a in 01_*.flac
do

shntool join -o flac *.flac

metaflac --export-tags-to=temp $a
metaflac --preserve-modtime --no-utf8-convert --import-tags-from=temp joined.flac

metaflac --preserve-modtime --no-utf8-convert --remove-tag=TRACKTOTAL joined.flac

NEUERNAME=${a:5}
# NEUERNAME=${a#*_-_}

done

mv joined.flac $NEUERNAME
rm temp

Antworten