Sie sind nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: Ubuntu-Forum & Kubuntu-Forum | www.Ubuntu-Forum.de. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

  • »otto1klein« ist der Autor dieses Themas

Beiträge: 338

Registrierungsdatum: 04.02.2009

Derivat: Ubuntu

Architektur: 32-Bit PC

  • Nachricht senden

1

20.06.2009, 14:04

Mehrere Dateien umbenennen -> Verzeichnisnamen hinzufügen; danach Verszeichnisstruktur entfernen

Hallo,

folgende Problematik:

Ich habe einige/viele mp3, die folgendermassen in (Unter-)Ordnern liegen:
MUSIC/Künstler/Album/Track-Titel.mp3

Ich hätte die Dateien gerne "automatisch" aus den Unterordnern geholt und komplett in den Ordner MUSIC verschoben.
Damit nicht alle Titel ungeordnet angezeigt werden würde ich sie gerne vorher "automatisch" umbenennen in:
Künstler Album Track-Titel (anhand der Ordnernamen).

Ein Problem dabei könnte sein:
Bei der momentanen Ordnerstruktur kann es auch vorkommen, dass einige Titel direkt im Ordner Künstler liegen.
Diese sollten dann eben so heissen:
Künstler Track-Titel

Andere haben ein Untererzeichnis mehr so z.B MUSIC/Soundtrack/Künstler/Album/Track-Titel
Diese sollten dann so heissen:
Soundtrack Künstler Album Track-Titel


Hoffe das ist soweit verständlich :huh:

Mal abgesehen davon, dass es sich um mp3 handelt müsste es doch auch ohne den Umweg, ID3-Tag erstellen, gehen.

Grüsse

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »otto1klein« (22.06.2009, 09:42)


  • »floogy« ist männlich

Beiträge: 3 071

Registrierungsdatum: 10.03.2005

Derivat: Ubuntu

Architektur: 64-Bit PC

Desktop: GNOME 3.0

Andere Betriebssysteme: debian

  • Nachricht senden

2

20.06.2009, 14:19

Quellcode

1
apt-cache search "(renamer|mmv\ |^id3v2)"

Gibt eine Liste von installierbaren Paketen aus.

z.B.:
id3ren - id3 tagger and renamer

Oder auch apt-cache search id3v2 ren ergibt z.B. exfalso:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
~$  apt-cache show exfalso|egrep -A9 Description\:
Description: audio tag editor for GTK+
 Ex Falso displays and edits audio metadata tags. Supported formats include
 MP3, Ogg Vorbis, FLAC, Musepack (MPC), WavPack, and MOD/XM/IT.
 .
 Notable features include:
  * Freeform tag editing for most supported formats, including ID3v2
  * Multiple values for tag keys
  * Flexible rename-by-tags and tag-by-filename patterns
  * Extensible using simple Python-based plugins
  * Edit multiple files in several formats at once

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »floogy« (20.06.2009, 14:18)


  • »otto1klein« ist der Autor dieses Themas

Beiträge: 338

Registrierungsdatum: 04.02.2009

Derivat: Ubuntu

Architektur: 32-Bit PC

  • Nachricht senden

3

20.06.2009, 20:01

Hallo floogy,

erstmal vorab danke für die Antwort
(und ein riesiges Lob für dein Engagement hier im Forum. Mir sind beim mitlesen schon des öfteren deine Beiträge als sehr fundiert, zum Thema und vor allem als sehr hilfreich auch für Anfänger aufgefallen. Soll kein geschleime sein, viel mehr, denke ich, tut es ab und zu auch gut ein Lob für sein Tun zu bekommen!)

zurück zum Thema:
Was ich anfangs schon meinte, würde ich gerne NICHT den Umweg über ID3-Tags nehmen. Audio Tag Tool ist z.B. empfindlich, wenn man mal einen Unterordner mehr oder weniger im Pfad zur gewünschten Datei hat.

Vergessen wir doch die mal, dass es sich um Musik handelt.

Bei rename Programmen, oder auch Thunar hab ich mir mal angesehen, gibt es glaube ich nicht die Möglichkeit automatisch den Pfad zu erfassen. Deshalb bin ich hier erstmal im Bereich Konsole gelandet.


Ist es nicht auf einfache Art möglich, die Pfadangabe (angefangen von einem bestimmten Verzeichnis, welches ich mal MUSIC nenne) zum Dateinamen dazu zu fügen?


Danke für weitere Hilfe.
Wenn es nicht so einfach gehen sollte, auch nicht schlimm, gibt ja noch die oben genannten Möglichkeiten.

...ich dachte ja nur, es gibt vielleicht Befehle wie:
1 suche alle Dateien in dem Ordner inkl. Unterordner
2 notiere dazu jeweils die Pfadangabe ab Ordner
3 erstelle neue Dateinamen aus Pfad und altem Namen
.... :rolleyes:

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »otto1klein« (20.06.2009, 20:01)


4

20.06.2009, 20:57

Hi,

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
find Musik/ *.mp3 > /tmp/mp3.txt
#Finde alle mp3 Dateien im Ordner Musik

mkdir $HOME/Desktop/Musik
#In diesem Ordner werden alle Dateien kopiert

cat /tmp/mp3.txt | while read line
#Gefundene Dateien werden Zeilenweise von /tmp/mp3.txt eingelesen
do
slash=`echo -n "$line" | sed -e 's/[^/]//g' | wc -m`
#Wie oft kommt der Slash in $line vor
if [ $slash -eq 3 ]
then 
     #/Künstler/Album/Track-Titel.mp3 to Künstler Album Track-Titel 
     album=`echo $line |cut -d / -f3`
     track=`echo $line | cut -d / -f4`
     artist=`echo $line | cut -d / -f2`
     #das "d" steht für delimiter und gibt dir dann das jeweilige Feld an
     cp $line $HOME/Desktop/Musik/"${artist} ${album} ${track}"
    #kopiert die Datei in den Ordner $HOME/Desktop/Musik/
elif [ $slash -eq 4 ]
then
      #/Soundtrack/Künstler/Album/Track-Titel to Soundtrack Künstler Album Track-Titel
       track=`echo $line | cut -d / -f5`
       artist=`echo $line | cut -d / -f3`
       album=`echo $line | cut -d / -f4`
       soundtrack=`echo $line | cut -d / -f2`
       cp $line $HOME/Desktop/Musik/"${soundtrack} ${artist} ${album} ${track}"
fi
done


Das ist nicht getestet! Du musst es noch etwas anpassen.
Performance müsste auch relativ scheiße sein!

Ciao frosti

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Frosti« (20.06.2009, 20:57)


  • »ggremlin« ist männlich

Beiträge: 2 622

Registrierungsdatum: 01.08.2005

Derivat: Ubuntu

Architektur: 64-Bit PC

Andere Betriebssysteme: debian lenny, arch linux,

  • Nachricht senden

5

20.06.2009, 22:47

Hi,

es geht auch ein klein wenig unkomplizierter.

google mal nach metamorphose

Mit diesem Programm kann man Ordner und Dateien flugs umbenennen oder sonst was.

gruss dirk

PS:
Gebe einfach mal den link an:
http://file-folder-ren.sourceforge.net/
AMD Athlon(tm) 64 X2 Dual Core Processor 4200+ 2x512 KB,Sockel AM2 EE 65 W
MSI Mainboard K9N Neo-F Sockel AM2
NVIDA 8500GT,256MB PCI_Express
4096 MB DDR2 Corsair Twin2X CL

  • »otto1klein« ist der Autor dieses Themas

Beiträge: 338

Registrierungsdatum: 04.02.2009

Derivat: Ubuntu

Architektur: 32-Bit PC

  • Nachricht senden

6

20.06.2009, 23:11

Hi Frosti,

das sieht ja mal nicht schlecht aus, danke.

Bin absoluter Anfänger, aber habe schon ungefähr verstanden worum es in deinem geht.

Quellcode

1
find Musik/ *.mp3 > /tmp/mp3.txt


Diese Zeile konnte bei mir mit "*.mp3" nicht ausgeführt werden, habe ich bei mir mal weggelassen, da eh nur mp3's in den ordnern sind.


Habe mir diesen Abschnitt ergänzt, für Lieder, die direkt im Künstler-Ordner liegen ist das so möglich (durch ein weiters "elif")?
Nicht verwirren lassen, ich habe andere Ordner zum testen gewählt.

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
if [ $slash -eq 2 ]
then 
 	#/Künstler/Track-Titel.mp3 to Künstler Track-Titel
 	track=`echo $line | cut -d / -f3`
 	artist=`echo $line | cut -d / -f2`
 	cp $line $HOME/1/tmp/"${artist} ${track}"
elif [ $slash -eq 3 ]
then 
 	#/Künstler/Album/Track-Titel.mp3 to Künstler Album Track-Titel 
 	album=`echo $line |cut -d / -f3`
 	track=`echo $line | cut -d / -f4`
 	artist=`echo $line | cut -d / -f2`
 	cp $line $HOME/1/tmp/"${artist} ${album} ${track}"
elif [ $slash -eq 4 ]
then
  	#/Soundtrack/Künstler/Album/Track-Titel to Soundtrack Künstler Album Track-Titel
   	track=`echo $line | cut -d / -f5`
   	artist=`echo $line | cut -d / -f3`
   	album=`echo $line | cut -d / -f4`
   	soundtrack=`echo $line | cut -d / -f2`
   	cp $line $HOME/1/tmp/"${soundtrack} ${artist} ${album} ${track}"



Momentaner Stand:
mp3.txt wird erzeugt
Ordner wird erstellt

bei "cp" geht er alle Titel durch, mekert aber bei jedem einzelnen:
"angegebenes Ziel ist kein Verzeichnis" -> somit bleibt der Ordner dann auch leer.
Was kann in der Zeile nicht stimmen? (mkdir /Dektop/Musik weiter oben im Skript habe ich natürlich angepasst an /1/tmp)

Gruß

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »otto1klein« (20.06.2009, 23:11)


  • »ggremlin« ist männlich

Beiträge: 2 622

Registrierungsdatum: 01.08.2005

Derivat: Ubuntu

Architektur: 64-Bit PC

Andere Betriebssysteme: debian lenny, arch linux,

  • Nachricht senden

7

20.06.2009, 23:28

Das kann ich Dir sagen.

Probiere doch einmal den Befehl:
cp $line $HOME/1/tmp/"${artist} ${track}"

so auszuführen.
Denn ich vermute, dass es den Ordner nicht gibt,
deshalb meckert der.
Lege zuerst den Ordner an dann reinkopieren...

Und es sind Leerzeichen drinnen,
das ist auch son Problem...

gute nächtle ;-)

dirk
AMD Athlon(tm) 64 X2 Dual Core Processor 4200+ 2x512 KB,Sockel AM2 EE 65 W
MSI Mainboard K9N Neo-F Sockel AM2
NVIDA 8500GT,256MB PCI_Express
4096 MB DDR2 Corsair Twin2X CL

  • »otto1klein« ist der Autor dieses Themas

Beiträge: 338

Registrierungsdatum: 04.02.2009

Derivat: Ubuntu

Architektur: 32-Bit PC

  • Nachricht senden

8

21.06.2009, 10:08

Hallo und danke ggremlin,

haben uns beim posten etwas überschnitten,
bin gerade beim probieren und alternativ schau ich mir noch Metamorphose an.

Braucht noch etwas Zeit....heute beeende ich erstmal :sleeping:

Guts Nächtle auch

EDIT:
Metamorphose kann den Pfad zum Namen speichern, jedoch nur in einer Ebene;
sprich es muss jeder Unterordner (in dem Dateien liegen) einzeln geöffnet und abgearbeitet werden.
Es ist nicht möglich nur den Hauptordner zu öffnen und alle Dateien in den Unterordnern umzubenennen.

zum Script:
Der Ordner /1/tmp existiert. Problem sind die Leerzeichen in den Dateinamen.
Als ich diese mit "_" ersetzt habe, hat das Script seinen Dienst getan;
allerdings wurde nur das 1. "if" abgearbeitet
-> die beiden "elif" wuden nicht beachtet.
Ergebnis: in /1/tmp/ liegen alle Titel, die direkt im Ordner "Künstler" zu finden waren.

Grüsse

@Frosti: Das mit dem zählen des "Slash" ist ja wirklich ein Geniestreich :thumbsup:
-> so flexibel lässt sich kein renamer konfigurieren

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »otto1klein« (21.06.2009, 10:08)


9

21.06.2009, 10:17

Hi,

das mit dem

Quellcode

1
find $HOME/Musik *.mp3

könntest du auch einfach mal im Terminal testen.
Vlt. heißt der Ordner bei dir "MUSIC".

Mein Skript ist ja abhängig von der Ausgabe von find, da ich die Slashes in einem String zähle und dann eine ergebnisabhängige Aktion ausführe.

Dachte, dass es mit den Leerzeichen funktionieren würde, da:

Quellcode

1
2
3
4
artist="artist 123"
album="album 123"
touch Desktop/test.txt
cp Desktop/test.txt Desktop/"${artist} ${album}"

problemlos funktioniert.

Ciao

  • »otto1klein« ist der Autor dieses Themas

Beiträge: 338

Registrierungsdatum: 04.02.2009

Derivat: Ubuntu

Architektur: 32-Bit PC

  • Nachricht senden

10

21.06.2009, 10:43

Hi,

Quellcode

1
find $HOME/Musik *.mp3


gibt bei mir im Terminal alle Daten im Ordner aus, nicht nur mp3 (hab zum testen mal was anderes dazukopiert).
Am Ende die Meldung:

Quellcode

1
find: "*.mp3": No such file or directory


Warum werden die beiden "elif" ignoriert?

11

21.06.2009, 11:38

Sorry bin voll der noob, aber so müsste es funktionieren:

Quellcode

1
find Musik -name '*.mp3'


Good luck

  • »otto1klein« ist der Autor dieses Themas

Beiträge: 338

Registrierungsdatum: 04.02.2009

Derivat: Ubuntu

Architektur: 32-Bit PC

  • Nachricht senden

12

22.06.2009, 09:41

Hi Frosti,

es ist vollbracht 8o

War ein hartes Stück Arbeit für mich, dein Script anzupassen, da ich eigentlich keine Ahnung davon habe.

Das Leerzeichenproblem:
statt $linie -> "${linie}

statt if..elif habe ich die Bedingungen in ein case gepackt, da dort nur der erste richtige Bedingung erfüllt wird.
(mit if, elif funktionierts natürlich auch; case ist mir nur auf meiner Recherche begegnet)

statt copy habe ich move verwendet, da ich eben nur umbenennen möchte.
Alle Songs aus den Unterordnern landen jetzt im großen Ordner Musik.
Ich muss nachher nur noch die leeren Ordner löschen.

Das war genau, was ich mir im 1. Post vorgestellt hatte!

Danke an alle, vor allem an dich Frosti, tolle Arbeit :thumbsup:

Und hier das Ergebnis:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
cd $HOME

find Musik -name '*.mp3' > /tmp/mp3.txt

cat /tmp/mp3.txt | while read line
do
slash=`echo -n "$line" | sed -e 's/[^/]//g' | wc -m`

case $slash in
 	2 )
 	#/Künstler/Track-Titel.mp3 to Künstler Track-Titel
 	track=`echo $line | cut -d / -f3`
 	artist=`echo $line | cut -d / -f2`
 	mv "${line}" $HOME/Musik/"${artist} ${track}";;
 	3 )
 	#/Künstler/Album/Track-Titel.mp3 to Künstler Album Track-Titel
 	track=`echo $line | cut -d / -f4`
 	album=`echo $line |cut -d / -f3`
 	artist=`echo $line | cut -d / -f2`
 	mv "${line}" $HOME/Musik/"${artist} ${album} ${track}";;
 	4 )
 	#/Soundtrack/Künstler/Album/Track-Titel to Soundtrack Künstler Album Track-Titel
 	track=`echo $line | cut -d / -f5`
 	album=`echo $line | cut -d / -f4`
 	artist=`echo $line | cut -d / -f3`
 	soundtrack=`echo $line | cut -d / -f2`
 	mv "${line}" $HOME/Musik/"${soundtrack} ${artist} ${album} ${track}";;
esac
done

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »otto1klein« (22.06.2009, 09:41)


13

22.06.2009, 10:18

Sorry, das mit $line beim ersten kopieren habe ich leider voll übersehen xD
Ich hätte halt copy genommen, da du dann noch die originaldateien gehabt hättest, falls etwas schief gelaufen wäre.
Wie ist eigentlich die Performance?


Ciao Frosti

P.S. Das Buch fand ich zum lernen und nachschauen ganz nett http://www.galileocomputing.de/katalog/b…gp/titelID-1712

  • »otto1klein« ist der Autor dieses Themas

Beiträge: 338

Registrierungsdatum: 04.02.2009

Derivat: Ubuntu

Architektur: 32-Bit PC

  • Nachricht senden

14

22.06.2009, 11:30

Hi,

Die Orginaldateien liegen bei mir auf einer seperaten Festplatte.

Enstanden ist die Idee dadurch, dass ich mir einen Multimediaplayer (auch zum Musik hören über Anlage) gekauft habe.
Als ich den ganzen Musikordner da drauf kopiert habe, musste ich feststellen, dass er nur jeweils die Songs in einem Ordner abspielt.
Um den nächsten Ordner anzuwählen ist es fast unumgänglich den Fernseher anzuschalten, sonst Blindflug.
Alternativ könnte man Playlisten erstellen. Allerdings, das Gerät nimmt nur 5 Playlists a' 99 Songs; d.h. wenn die 500 Lieder durch sind neue Playlisten hochladen mit einem speziellen Programm, das ich nur für Windows habe. Das ist mir alles viel zu umständlich.
Und sowas nennt sich MULTIMEDIAplayer. :thumbdown:

Lange Rede kurzer Sinn es handelt sich bereits um eine Kopie der Lieder.

Performance für einige 1000 Daten kann ich noch nicht sagen, aber für meine etwa 100 Test-Dateien war's sehr schnell. Keine Ahnung, vielleicht so 3 Sekunden?
Bei "case" ist es ja auch noch möglich, den am häufigst vorkommenden Fall ganz oben einzutragen.
Vielleicht bringt das noch was, aber zum Kaffee holen reicht die Zeit allemal nicht :).
Wenn ich daran denke, werde ich mal die Zeit stoppen für etwa 5000 Lieder.

Ich finds genial, und bin überzeugt, dass ich das kleine Script nach Anpassung auch mal für andere Aufgaben gebrauchen kann.

DAS BUCH: kenn ich schon, danke für die Erinnerung, da hab ich bei meiner jetzigen Suche gar nicht drangedacht.

Ciao

EDIT:
5400 Titel
verteilt in 540 Unterordnern (auf Ext. USB-Festplatte)
in 7 Minuten
ohne Fehler durchlaufen -> mehr wollte ich nicht :thumbsup:

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »otto1klein« (22.06.2009, 11:30)