• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Bash programmierung..hilfe bitte

Hallo an alle,

habe einen Ordner in dem ca. 1500 Dateien liegen angefangen von mp3's bis jpeg's.. das Problem in fast allen Dateinamen kommt eine Webadresse vor
wie z.B. LiedNr.2.www.blafasel.to.mp3..

würde gern ein kleines Skript schreiben das die Webadresse von jeder Datei entfernt und den verbliebenen Dateinamen belässt..
sprich aus LiedNr.2.www.blafasel.to.mp3 wird LiedNr.2.mp3...das ganze sollte realisierbar sein denke ich nur reichen meine Bashkenntnisse nicht dafür aus..

Hat vllt jmd einen Vorschlag ?


Danke
 
Könnte sein, daß Du's auch hinkriegst, wenn Du "man mmv" intensiv liest und "mmv" gründlich ausprobierst.
 
Das Beispiel Deiner Namensmuster sieht nicht sehr günstig aus. Fangen alle Webadressen hinter einem Punkt mit www an? Glaube ich irgendwie nicht.

Dann noch die Frage, wenn der störende Teil aus dem Namen entfernt ist, kommt es dann zu Dubletten? Wie soll mit denen Umgegangen werden?

Ich empfehle für die Aufgabe Python oder Perl, da muss man sich nicht so sehr das Gehirn verrenken.
 
Danke abgdf für diesen konstruktiven Beitrag..am besten mal selbst die Manpages durchsuchen und merken das es alleine nicht hin haut..

Wizzard die Namensmuster sehen so aus

Interpret - Lied [www.example.com].mp3
Interpret - Lied [www.exmaple333.com].mp3 // Die Webadresse ist nicht immer die selbe
am Ende sollte es dann so aussehen

Interpret - Lied.mp3


Danke
 
Danke abgdf für diesen konstruktiven Beitrag..am besten mal selbst die Manpages durchsuchen und merken das es alleine nicht hin haut..
Solch "Umbenennen"-Fragen tauchen hier immer mal wieder auf. Zwei-, dreimal hab' ich den Leuten dazu ein fertiges Python-Skript geschrieben. Inzwischen bin ich insoweit halt etwas müde, weil die Skripte im einzelnen jedesmal anders aussehen und nur von dem jeweiligen Fragesteller verwendet werden können, der dann meistens noch nicht mal begreift, daß ich nur für ihn eine kostenlose Dienstleistung erbracht habe und der deshalb noch nicht mal "Danke" dafür sagt.

Noch besser sind dann noch die, die das fertige Skript gar nicht ausprobieren, weil sie nicht wissen, wie man überhaupt ein Skript ausführt. Da lohnt sich die Mühe wirklich nicht.
Daher jetzt meine Standard-Antwort: Versuch's mit "mmv" (das ja versucht, die häufigsten dieser "Umbenennen"-Fälle abzudecken) oder lern' selbst programmieren (letzteres meist aussichtslos, wenn schon hier gefragt wird).

Vielen Dank für Dein Verständnis.

Gruß
 
Hallo,

im Thread http://www.linux-club.de/viewtopic.php?f=21&t=97163 habe ich den Rumpf eines Scriptes gepostet mit dem Dateinamen nach Zeichen durchsucht werden. Wenn man den Rumpf geschickt um die Kommandos sed "s/ABC/DEF/g" und mv ergänzt lässt sich auch Dein Problem lösen. Ich hoffe, die Vorlage hilft dir so weit, dass du das Problem selbst lösen kannst.

Leider ist die Manpage für sed nicht sehr ausführlich. Deshalb ein Beispiel:

neuevariable=`echo $altevariable | sed "s/ABC/DEF/g"`

heisst: Ersetze die Zeichen ABC in der altevariable durch DEF und speichere sie in neuevariable.

Gruß
Georg
 
Angenommen, die Dateinamen haben das Schema Lied.n.url.extension, wobei url selbst wieder zusammengesetzt sein darf. Dann könnte es damit klappen:

Code:
#!/bin/sh

file=$1
# alles löschen, was hinter dem Punkt liegt:
lied=`echo $file | sed "s/\..*$//"`

# vom Anfang her löschen, was kein Punkt ist, und dann den Punkt:
file=`echo $file | sed "s/^[^.]*\.//"`

# jetzt wiederholt sich das:
n=`echo $file | sed "s/\..*$//"`

# sukzessive alles wegnehmen, was vor einem Punkt steht:
fileold=$file
file=`echo $file | sed "s/^[^.]*\.//"`
while [ "$fileold" != $file ]
do
  fileold=$file
  file=`echo $file | sed "s/^[^.]*\.//"`
done

# jetzt ist nur noch die Extension übrig.
newfile=$lied.$n.$ext
mv $1 $newfile
exit 0

Aber bitte Vorsicht: Wenn beim Wegnehmen der URL Dateien mit gleichem Namen entstehen können, verlierst Du Daten!
 
Oben