Phanom
Anmeldungsdatum: 28. April 2013
Beiträge: 222
|
Hallo Gurus ich habe jetzt mehrere Quoting versuche durchgespielt doch ich komme nicht weiter. | Datei=$(sed 's#^.*\("/\)#\1#' $Pfad"tmpDatei.txt")
Name=$(sed 's/ /\\ /g' < $Pfad"tmpStaffel.txt")
test=$(echo "${Ziel}${Sender}/${Name}.mkv")
mkdir -p $Ziel$Sender
mv $Datei "$test"
mv: das angegebene Ziel '/home/user/Videos/Simpsons/ORF1/562\ 10\ Der\ Mann,\ der\ als\ Dinner\ kam.mkv' ist kein Verzeichnis
|
die Variable $Name ist auch so geschrieben mit den Backslash
562\ 10\ Der\ Mann,\ der\ als\ Dinner\ kam
| echo $test
/home/user/Videos/Simpsons/ORF1/562\ 10\ Der\ Mann,\ der\ als\ Dinner\ kam.mkv
|
führe ich es als Ausgabe aus und kopiere es Händisch in das terminal dann geht es
| echo $Datei "$test"
"/home/user/Videos/Serien/Die_Simpsons/Die-Simpsons/Die_Simpsons/test/tete/Die Simpsons (Kopie).Der Mann, der als Dinner kam.mkv" /home/user/Videos/Simpsons/ORF1/562\ 10\ Der\ Mann,\ der\ als\ Dinner\ kam.mkv
mv "/home/user/Videos/Serien/Die_Simpsons/Die-Simpsons/Die_Simpsons/test/tete/Die Simpsons (Kopie).Der Mann, der als Dinner kam.mkv" /home/user/Videos/Simpsons/ORF1/562\ 10\ Der\ Mann,\ der\ als\ Dinner\ kam.mkv
|
Zusätzlich mit Klammern jeglicher Art versucht, mit zusätzlichen " oder ' die Backslash wieder weggenommen immer ein Fehle. Bitte um Hilfe. Danke
|
rklm
Projektleitung
Anmeldungsdatum: 16. Oktober 2011
Beiträge: 12801
|
Kannst Du vielleicht mal in Worten sagen, was Du eigentlich vorhast?
|
seahawk1986
Anmeldungsdatum: 27. Oktober 2006
Beiträge: 11176
Wohnort: München
|
Warum quotest du die Variablen nicht einfach korrekt statt da Backslashes in den String einzubauen, so dass ein Pfad entsteht, der so nicht existiert? Zeile 1 macht keinen Sinn ohne zu wissen, was in tmpDatei.txt steht. Zeile 2 riecht danach, dass du das Escapen von Zeichen in der Shell nicht verstanden hast - nur wenn die Shell einen Pfad evaluiert, wird ein '\ ' als Leerzeichen gesehen - aber ein eval taucht da nicht auf (und ist normalerweise völlig überflüssig, wenn man richtig quotet). Zeile 3 ist unnötig kompliziert - da reicht sowas:
| test="${Ziel}/${Sender}/${Name}.mkv"
|
Zeile 4 und 5 leiden darunter, dass die Variablen nicht korrekt gequotet wurden und du Backslashes in den Pfad eingebaut hast, so dass das Ziel nicht existiert.
| mkdir -p "${Ziel}/${Sender}"
mv "$Datei" "$test"
|
|
Phanom
(Themenstarter)
Anmeldungsdatum: 28. April 2013
Beiträge: 222
|
Hallo rklm seahawk1986 vor habe ich aufräumen sortieren und doppelte entfernen
ich weiß doppelte Post sollten nicht gemacht werden aber der hier ist für einen Fehler und der andere war für das ganze Skript um mehr zu lernen, habe es aber als gelöst gesetzt da es zu viele infos von mir hatte ohne das es einer verstehen konnte. https://forum.ubuntuusers.de/topic/aufraeumen-dateien-umbenenne-verschieben-nach-/ Ich habe mich jetzt 3 Tage durchgekämpft und bin fast am ziel und bin leider da hängen geblieben mit dem
Quoting. Erste Vorschläge habe ich schon umgesetzt, bitte nicht lachen oder beschweren über das Script ich lerne noch ^^
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131 | ###############geht######################################################
Pfad=~/Videos/Serien/Die_Simpsons/Die-Simpsons/Die_Simpsons/test/ # echo $Pfad
Ziel=~/Videos/Simpsons
cd $Pfad
#Zeilenumbruch in dateinamen entfernen
find -name $'*\n*' -exec rename $'s|\n| |g' '{}' \;
#vorhandene datein mit sender
mediainfo --Inform="General;%TVCHANNEL%%CompleteName%\n" $Pfad > $Pfad"datei.txt" # aufnahmen nach sender ort und name auslesen
#sed quoten erstellte datei mit Mediainfo
sed -i 's/HD/"/' $Pfad"datei.txt" # HD entfernen und " einfügen
sed -i 's/$/"/' $Pfad"datei.txt" # zeilen ende " eifügen
#Variablen erstellen und auslesen
# Datei zeilenweise einlesen Staffel.txt händig erstellt mit Calc und Wikipedia
while read Staffel
do
echo $Staffel > $Pfad"tmpStaffel.txt" #zeilenweise übergabe der eingelesenen Staffel.txt
wc -w $Pfad"tmpStaffel.txt" > $Pfad"variablen.txt" #tmpStaffel.txt wörter zählen um dies weiter in read Var1 Var2 Var3
read Var1 Var2 Var3 < $Pfad"variablen.txt" # benötigt wird nur die Zahl aus der vorher ausgefürten um dies weiter in der if schleife zu bearbeiten zu können
read Staff1 Staff2 Staff3 Staff4 Staff5 Staff6 Staff7 Staff8 Staff9 Staff10 Staff11 Staff12 Staff12 < $Pfad"tmpStaffel.txt" # bis zu 12 einzelne wörter einlesen aus der Staffel.txt
#datei umbenenen und verschieben
if [ $Var1 = 3 ]; then # vergleich und weiteres vorgehen von wc -w und read var
cat $Pfad"datei.txt" | grep $Staff3. > $Pfad"tmpDatei.txt" #finde das 3 wort von staffel.txt in der datei.txt und speichert die ausgabe in tmpDatei
tmp=$(head -n 1 $Pfad"tmpDatei.txt") #liest die erste Zeile der erstellte tmpDatei und setzt es in eine Variable tmp um weiter bearbeite werden zu können
echo $tmp > $Pfad"tmpDatei.txt" #gibt die variable tmp aus und überschreibt die tmpDatei
awk -F' ' 'BEGIN { OFS=" " } { print $1 }' $Pfad"tmpDatei.txt" > $Sender # liest den sender aus der der erstellten tmpDatei aus und speichert dies in der Variable Sender
Datei=$(sed 's#^.*\("/\)#\1#' $Pfad"tmpDatei.txt") #löscht das erste wort in der Datei ( sendernamen )
#Name=$(sed 's/ /\ /g' < $Pfad"tmpStaffel.txt") #setzt vor lehrzeichen ein backslash in den Staffelnamen (änderung durch vorschlag UU )
Name=$(cat $Pfad"tmpStaffel.txt") #(änderung durch vorschlag UU )
test="${Ziel}/${Sender}/${Name}.mkv" # vorgegeben variablen in einer bündeln und datei typ wieder anhängen (änderung durch vorschlag UU )
mkdir -p $Ziel$Sender #ziehl ordner erstellen (sendername)
mv $Datei "$test" #Datei verschieben
#echo $Datei "$test"
#####################ab hier nur wiederholungen nur die Staff anzahl ändert sich
elif [ $Var1 = 4 ]; then
cat $Pfad"datei.txt" | grep $Staff3.$Staff4. > $Pfad"tmpDatei.txt"
tmp=$(head -n 1 $Pfad"tmpDatei.txt")
echo $tmp > $Pfad"tmpDatei.txt"
awk -F' ' 'BEGIN { OFS=" " } { print $1 }' $Pfad"tmpDatei.txt" > $Sender
Datei=$(sed 's#^.*\("/\)#\1#' $Pfad"tmpDatei.txt")
#Name=$(sed 's/ /\ /g' < $Pfad"tmpStaffel.txt")
Name=$(cat $Pfad"tmpStaffel.txt") #(änderung durch vorschlag UU )
test="${Ziel}/${Sender}/${Name}.mkv"
mkdir -p $Ziel$Sender
mv $Datei "$test"
elif [ $Var1 = 5 ]; then
cat $Pfad"datei.txt" | grep $Staff3.$Staff4.$Staff5. > $Pfad"tmpDatei.txt"
tmp=$(head -n 1 $Pfad"tmpDatei.txt")
echo $tmp > $Pfad"tmpDatei.txt"
awk -F' ' 'BEGIN { OFS=" " } { print $1 }' $Pfad"tmpDatei.txt" > $Sender
Datei=$(sed 's#^.*\("/\)#\1#' $Pfad"tmpDatei.txt")
#Name=$(sed 's/ /\ /g' < $Pfad"tmpStaffel.txt")
Name=$(cat $Pfad"tmpStaffel.txt") #(änderung durch vorschlag UU )
test="${Ziel}/${Sender}/${Name}.mkv"
mkdir -p $Ziel$Sender
mv $Datei "$test"
elif [ $Var1 = 6 ]; then
cat $Pfad"datei.txt" | grep $Staff3.$Staff4.$Staff5.$Staff6. > $Pfad"tmpDatei.txt"
tmp=$(head -n 1 $Pfad"tmpDatei.txt")
echo $tmp > $Pfad"tmpDatei.txt"
awk -F' ' 'BEGIN { OFS=" " } { print $1 }' $Pfad"tmpDatei.txt" > $Sender
Datei=$(sed 's#^.*\("/\)#\1#' $Pfad"tmpDatei.txt")
#Name=$(sed 's/ /\ /g' < $Pfad"tmpStaffel.txt")
Name=$(cat $Pfad"tmpStaffel.txt") #(änderung durch vorschlag UU )
test="${Ziel}/${Sender}/${Name}.mkv"
mkdir -p $Ziel$Sender
mv $Datei "$test"
elif [ $Var1 = 7 ]; then
cat $Pfad"datei.txt" | grep $Staff3.$Staff4.$Staff5.$Staff6.$Staff7. > $Pfad"tmpDatei.txt"
tmp=$(head -n 1 $Pfad"tmpDatei.txt")
echo $tmp > $Pfad"tmpDatei.txt"
awk -F' ' 'BEGIN { OFS=" " } { print $1 }' $Pfad"tmpDatei.txt" > $Sender
Datei=$(sed 's#^.*\("/\)#\1#' $Pfad"tmpDatei.txt")
#Name=$(sed 's/ /\ /g' < $Pfad"tmpStaffel.txt")
Name=$(cat $Pfad"tmpStaffel.txt") #(änderung durch vorschlag UU )
test="${Ziel}/${Sender}/${Name}.mkv"
mkdir -p $Ziel$Sender
mv $Datei "$test"
elif [ $Var1 = 8 ]; then
cat $Pfad"datei.txt" | grep $Staff3.$Staff4.$Staff5.$Staff6.$Staff7.$Staff8. > $Pfad"tmpDatei.txt"
tmp=$(head -n 1 $Pfad"tmpDatei.txt")
echo $tmp > $Pfad"tmpDatei.txt"
awk -F' ' 'BEGIN { OFS=" " } { print $1 }' $Pfad"tmpDatei.txt" > $Sender
Datei=$(sed 's#^.*\("/\)#\1#' $Pfad"tmpDatei.txt")
#Name=$(sed 's/ /\ /g' < $Pfad"tmpStaffel.txt")
Name=$(cat $Pfad"tmpStaffel.txt") #(änderung durch vorschlag UU )
test="${Ziel}/${Sender}/${Name}.mkv"
mkdir -p $Ziel$Sender
mv $Datei "$test"
elif [ $Var1 = 9 ]; then
cat $Pfad"datei.txt" | grep $Staff3.$Staff4.$Staff5.$Staff6.$Staff7.$Staff8.$Staff9. > $Pfad"tmpDatei.txt"
tmp=$(head -n 1 $Pfad"tmpDatei.txt")
echo $tmp > $Pfad"tmpDatei.txt"
awk -F' ' 'BEGIN { OFS=" " } { print $1 }' $Pfad"tmpDatei.txt" > $Sender
Datei=$(sed 's#^.*\("/\)#\1#' $Pfad"tmpDatei.txt")
#Name=$(sed 's/ /\ /g' < $Pfad"tmpStaffel.txt")
Name=$(cat $Pfad"tmpStaffel.txt") #(änderung durch vorschlag UU )
test="${Ziel}/${Sender}/${Name}.mkv"
mkdir -p $Ziel$Sender
mv $Datei "$test"
elif [ $Var1 = 10 ]; then
cat $Pfad"datei.txt" | grep $Staff3.$Staff4.$Staff5.$Staff6.$Staff7.$Staff8.$Staff9.$Staff10. > $Pfad"tmpDatei.txt"
tmp=$(head -n 1 $Pfad"tmpDatei.txt")
echo $tmp > $Pfad"tmpDatei.txt"
awk -F' ' 'BEGIN { OFS=" " } { print $1 }' $Pfad"tmpDatei.txt" > $Sender
Datei=$(sed 's#^.*\("/\)#\1#' $Pfad"tmpDatei.txt")
#Name=$(sed 's/ /\ /g' < $Pfad"tmpStaffel.txt")
Name=$(cat $Pfad"tmpStaffel.txt") #(änderung durch vorschlag UU )
test="${Ziel}/${Sender}/${Name}.mkv"
mkdir -p $Ziel$Sender
mv $Datei "$test"
elif [ $Var1 = 11 ]; then
cat $Pfad"datei.txt" | grep $Staff3.$Staff4.$Staff5.$Staff6.$Staff7.$Staff8.$Staff9.$Staff10.$Staff11. > $Pfad"tmpDatei.txt"
tmp=$(head -n 1 $Pfad"tmpDatei.txt")
echo $tmp > $Pfad"tmpDatei.txt"
awk -F' ' 'BEGIN { OFS=" " } { print $1 }' $Pfad"tmpDatei.txt" > $Sender
Datei=$(sed 's#^.*\("/\)#\1#' $Pfad"tmpDatei.txt")
#Name=$(sed 's/ /\ /g' < $Pfad"tmpStaffel.txt")
Name=$(cat $Pfad"tmpStaffel.txt") #(änderung durch vorschlag UU )
test="${Ziel}/${Sender}/${Name}.mkv"
mkdir -p $Ziel$Sender
mv $Datei "$test"
elif [ $Var1 = 12 ]; then
cat $Pfad"datei.txt" | grep $Staff3.$Staff4.$Staff5.$Staff6.$Staff7.$Staff8.$Staff9.$Staff10.$Staff11.$Staff12. > $Pfad"tmpDatei.txt"
awk -F' ' 'BEGIN { OFS=" " } { print $1 }' > $Pfad"tmpsender.txt"
fi
done < $Pfad"Staffel.txt" #Staffel.txt datei für die wihle schleife ( zeilenweise einlesen )
cd
|
Warum quotest du die Variablen nicht einfach korrekt statt da Backslashes in den String einzubauen, so dass ein Pfad entsteht, der so nicht existiert?
weil es der letzte versuch war um den Pfad irgend wie zu erzwingen wie gesagt würde gern korrekt quoten wenn ich wüste wo der Fehler ist.
Zeile 1 macht keinen Sinn ohne zu wissen, was in tmpDatei.txt
genau so steht es in der Datei ( kopiert aus der datei ) ORF1 "/home/quattro/Videos/Serien/Die_Simpsons/Die-Simpsons/Die_Simpsons/test/tete/Die Simpsons.Der Mann, der als Dinner kam.mkv"
seahawk1986 leider brachten mir deine änderungen noch mehr Fehler als der eine mv "$Datei" "$test"
| user@PC:~$ mv "$Datei" "$test"
mv: Aufruf von stat für '"/home/user/Videos/Serien/Die_Simpsons/Die-Simpsons/Die_Simpsons/test/tete/Die Simpsons.Der Mann, der als Dinner kam.mkv"' nicht möglich: Datei oder Verzeichnis nicht gefunden
user@PC:~$ ls /home/user/Videos/Serien/Die_Simpsons/Die-Simpsons/Die_Simpsons/test/tete/
'Abraham und Zelda-2002 (Kopie).mkv' 'Donnerstags bei Abe-2010 (Kopie).mkv'
'Die Simpsons.Der Mann, der als Dinner kam.mkv' 'Es war einmal in Springfield-2010 (Kopie).mkv'
'Die Simpsons (Kopie).Goodsimpsons Comedy, USA 2012 Altersfreigabe: ab 12.mkv' 'Lebe lieber unbebrudert-2009 (Kopie).mkv'
'Die Simpsons (Kopie).Homers vergessene Kinder Comedy, USA 2012 Altersfreigabe: ab 6.mkv'
user@PC:~$
|
test="${Ziel}/${Sender}/${Name}.mkv"
musste ich die Variable Ziel änder was ein dummen neben efekt hat das ich sonst in mv ein doppel slash habe was aber wiederum den ordner falsch angelegt
ohne variable änderung doppelslash vor ORF1
| mv: das angegebene Ziel '/home/user/Videos/Simpsons//ORF1/562 10 Der Mann, der als Dinner kam.mkv' ist kein Verzeichnis
|
aber ordner richtig angelegt
mit änderung doppelslash ist weg aber dafür der ordner falsch
| ls /home/user/Videos/
Aufnahmen BD Defekt-FP Doku Musik Serien Simpsons SimpsonsORF1
|
und noch andere nebenefekte ich mach jetzt erst mal wieder alles rückgängig ☺ nicht böse gemeint nur ich dachte bin fast am Ziehl meiner arbeit Grüße Phanom
|
Phanom
(Themenstarter)
Anmeldungsdatum: 28. April 2013
Beiträge: 222
|
jetzt bin ich noch mehr verwirrt Test mit quoting ohne Erfolg, Script schnipsel genommen und gespielt ohne Erfolg. Script schnipsel umgeleitet in ein anderes Script dies ausgeführt und es geht
mv mag die direkt variablen Verarbeitung nicht es erwartet einen Ordner und akzeptiert die Namensänderung nicht in Variable
| user@PC:~$ Datei=$(sed 's#^.*\("/\)#\1#' $Pfad"tmpDatei.txt") #löscht das erste wort in der Datei ( sendernamen )
user@PC:~$ echo $Datei > $Pfad"ald.txt"
user@PC:~$ echo $Ziel$Sender/$Name.mkv > $Pfad"neu.txt"
user@PC:~$ sed -i 's/^/"/' $Pfad"neu.txt" # zeilen Anfang " eifügen
user@PC:~$ sed -i 's/$/"/' $Pfad"neu.txt" # zeilen ende " eifügen
user@PC:~$ quelle=$(cat $Pfad"ald.txt")
user@PC:~$ geht=$(cat $Pfad"neu.txt")
user@PC:~$
user@PC:~$ mv -v $quelle $geht
mv: das angegebene Ziel 'kam.mkv"' ist kein Verzeichnis
|
die Variablen in TEXT aufgelöst in eine Datei geschrieben und dies dann ausgeführt geht. | user@PC:~$ echo '#!/bin/bash' > $Pfad"mach.sh"
user@PC:~$ echo mv -v $quelle $geht >> $Pfad"mach.sh"
user@PC:~$
user@PC:~$ $Pfad"mach.sh"
Datei kopiert '/home/user/Videos/Serien/Die_Simpsons/Die-Simpsons/Die_Simpsons/test/562 10 Der Mann, der als Dinner kam (Kopie).mkv' -> '/home/user/Videos/Simpsons/ORF1/562 10 Der Mann, der als Dinner kam.mkv'
'/home/user/Videos/Serien/Die_Simpsons/Die-Simpsons/Die_Simpsons/test/562 10 Der Mann, der als Dinner kam (Kopie).mkv' wurde entfernt
user@PC:~$
|
ich glaube werde das so einbauen das das Script startet wenn die if abfrage übereinstimmt.
Jetzt ist nur die frage ob ich eine Pause einbauen muss oder ob des Script erst weiter läuft wenn das mv Script zu Ende ist. Grüße Phanom
|
seahawk1986
Anmeldungsdatum: 27. Oktober 2006
Beiträge: 11176
Wohnort: München
|
Kannst du mal zeigen, was die Ausgabe von
mediainfo --Inform="General;%TVCHANNEL%%CompleteName%\n" $Pfad
für eine deiner Dateien ist, damit ich das mal durchspielen kann - ich denke das Hauptproblem entsteht dadurch, dass du da Anführungszeichen um den Pfad reinbastelst, aber ich würde das gerne mal anhand eines realen Beispiels durchspielen.
|
Phanom
(Themenstarter)
Anmeldungsdatum: 28. April 2013
Beiträge: 222
|
Hallo seahawk1986 Dateien abfragen 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
31
32
33
34
35
36
37
38
39
40
41
42
43 | Pfad=~/Videos/Serien/Die_Simpsons/Die-Simpsons/ # Arbeitsverseichnis / suche rekursiv nach Dateien
cd $Pfad
mediainfo --Inform="General;%TVCHANNEL%%CompleteName%\n" $Pfad > $Pfad"datei.txt" # Aufnahmen nach Sender Ort und Name auslesen
############################
/home/user/Videos/Serien/Die_Simpsons/Die-Simpsons/Staffel.txt
Pro7 MAXX HD/home/user/Videos/Serien/Die_Simpsons/Die-Simpsons/Testordner/303-Der Versager.mkv
Pro7 MAXX HD/home/user/Videos/Serien/Die_Simpsons/Die-Simpsons/Testordner/Bart schlägt eine Schlacht-USA-2002.mkv
ORF1 HD/home/user/Videos/Serien/Die_Simpsons/Die-Simpsons/Testordner/Der Eignungstest comediy, USA-2002.mkv
ProSieben HD/home/user/Videos/Serien/Die_Simpsons/Die-Simpsons/Testordner/Die-Simpsons, Die Kontaktanzeige.mkv
Pro7 MAXX HD/home/user/Videos/Serien/Die_Simpsons/Die-Simpsons/Testordner/Homer als Frauenheld Comedy, Altersfreigabe 12.mkv
ProSieben HD/home/user/Videos/Serien/Die_Simpsons/Die-Simpsons/Testordner/Kampf dem Ehekrieg.mkv
ProSieben HD/home/user/Videos/Serien/Die_Simpsons/Die-Simpsons/Testordner/Lisas Pony.mkv
ORF1 HD/home/user/Videos/Serien/Die_Simpsons/Die-Simpsons/Testordner/Simpsons.Die Kontaktanzeige.mkv
Pro7 MAXX HD/home/user/Videos/Serien/Die_Simpsons/Die-Simpsons/Testordner/Test Ordner/303-Der Versager.mkv
Pro7 MAXX HD/home/user/Videos/Serien/Die_Simpsons/Die-Simpsons/Testordner/Test Ordner/Bart schlägt eine Schlacht-USA-2002.mkv
ORF1 HD/home/user/Videos/Serien/Die_Simpsons/Die-Simpsons/Testordner/Test Ordner/Der Eignungstest comediy, USA-2002.mkv
ProSieben HD/home/user/Videos/Serien/Die_Simpsons/Die-Simpsons/Testordner/Test Ordner/Die-Simpsons, Die Kontaktanzeige.mkv
Pro7 MAXX HD/home/user/Videos/Serien/Die_Simpsons/Die-Simpsons/Testordner/Test Ordner/Homer als Frauenheld Comedy, Altersfreigabe 12.mkv
ProSieben HD/home/user/Videos/Serien/Die_Simpsons/Die-Simpsons/Testordner/Test Ordner/Kampf dem Ehekrieg.mkv
ProSieben HD/home/user/Videos/Serien/Die_Simpsons/Die-Simpsons/Testordner/Test Ordner/Lisas Pony.mkv
ORF1 HD/home/user/Videos/Serien/Die_Simpsons/Die-Simpsons/Testordner/Test Ordner/Simpsons.Die Kontaktanzeige.mkv
ORF1 HD/home/user/Videos/Serien/Die_Simpsons/Die-Simpsons/Testordner/Test Ordner/die - Simpsons Der Wunderschläger Comedy USA-2002.mkv
Pro7 MAXX HD/home/user/Videos/Serien/Die_Simpsons/Die-Simpsons/Testordner/Testordner1/303-Der Versager.mkv
Pro7 MAXX HD/home/user/Videos/Serien/Die_Simpsons/Die-Simpsons/Testordner/Testordner1/Bart schlägt eine Schlacht-USA-2002.mkv
ORF1 HD/home/user/Videos/Serien/Die_Simpsons/Die-Simpsons/Testordner/Testordner1/Der Eignungstest comediy, USA-2002.mkv
ProSieben HD/home/user/Videos/Serien/Die_Simpsons/Die-Simpsons/Testordner/Testordner1/Die-Simpsons, Die Kontaktanzeige.mkv
Pro7 MAXX HD/home/user/Videos/Serien/Die_Simpsons/Die-Simpsons/Testordner/Testordner1/Homer als Frauenheld Comedy, Altersfreigabe 12.mkv
ProSieben HD/home/user/Videos/Serien/Die_Simpsons/Die-Simpsons/Testordner/Testordner1/Kampf dem Ehekrieg.mkv
ProSieben HD/home/user/Videos/Serien/Die_Simpsons/Die-Simpsons/Testordner/Testordner1/Lisas Pony.mkv
ORF1 HD/home/user/Videos/Serien/Die_Simpsons/Die-Simpsons/Testordner/Testordner1/Simpsons.Die Kontaktanzeige.mkv
ProSieben HD/home/user/Videos/Serien/Die_Simpsons/Die-Simpsons/Testordner/Testordner1/die - Simpsons Der Wunderschläger.mkv
Pro7 MAXX HD/home/user/Videos/Serien/Die_Simpsons/Die-Simpsons/Testordner/Testordner2/303-Der Versager.mkv
Pro7 MAXX HD/home/user/Videos/Serien/Die_Simpsons/Die-Simpsons/Testordner/Testordner2/Bart schlägt eine Schlacht-USA-2002.mkv
ORF1 HD/home/user/Videos/Serien/Die_Simpsons/Die-Simpsons/Testordner/Testordner2/Der Eignungstest comediy, USA-2002.mkv
ProSieben HD/home/user/Videos/Serien/Die_Simpsons/Die-Simpsons/Testordner/Testordner2/Die-Simpsons, Die Kontaktanzeige.mkv
Pro7 MAXX HD/home/user/Videos/Serien/Die_Simpsons/Die-Simpsons/Testordner/Testordner2/Homer als Frauenheld Comedy, Altersfreigabe 12.mkv
ProSieben HD/home/user/Videos/Serien/Die_Simpsons/Die-Simpsons/Testordner/Testordner2/Kampf dem Ehekrieg.mkv
ProSieben HD/home/user/Videos/Serien/Die_Simpsons/Die-Simpsons/Testordner/Testordner2/Lisas Pony.mkv
ORF1 HD/home/user/Videos/Serien/Die_Simpsons/Die-Simpsons/Testordner/Testordner2/Simpsons.Die Kontaktanzeige.mkv
Pro7 MAXX HD/home/user/Videos/Serien/Die_Simpsons/Die-Simpsons/Testordner/Testordner2/die Simpsons Der Wunderschläger.mkv
ORF1 HD/home/user/Videos/Serien/Die_Simpsons/Die-Simpsons/Testordner/Der Wunderschläger.mkv
/home/user/Videos/Serien/Die_Simpsons/Die-Simpsons/datei.txt
|
jetzt laufen diverse variablen Aufnahme um zB Sender Aufzunehmen und alles was vor dem Pfad steht zu verarbeiten und unnötige Sachen entfernen damit nur noch der Pfad da steht.
Nächster schritt lese diese Daten zeilenweise, ignoriere die ersten 2 Wörter und suche die restlichen einzeln in der zuvor erstellten Datei mit der vorher erstellten Abfrage.
Zähle die Wörter und setze ab Wort 3 jeweils in eine Variable diese werden dann in der zuvor erstellten dabei gesucht. Besonderheit Newline wird auch entfernt Heutige Aufnahmen | ORF1 HD/home/user/Videos/Serien/Die_Simpsons/1n/Auf den Hund gekommen.mkv
ProSieben HD/home/user/Videos/Serien/Die_Simpsons/1n/Der Stoff, aus dem die Träume sind / Comedy, USA 2012 / Altersfreigabe: ab 12.mkv
ProSieben HD/home/user/Videos/Serien/Die_Simpsons/1n/Freundschaftsanfrage von Lisa / Comedy, USA 2012 / Altersfreigabe: ab 12.mkv
ORF1 HD/home/user/Videos/Serien/Die_Simpsons/1n/Mission Simpossible.mkv
|
Vorgabe der Namen: Folge gesamt, Staffel Folge und Folge Name
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
31 | gekürzt hier fehlen am anfang 39 Einträge
Staffel 3
36 1 Die Geburtstagsüberraschung
37 2 Einmal Washington und zurück
38 3 Ein Fluch auf Flanders
39 4 Verbrechen lohnt sich nicht
40 5 Der Ernstfall
41 6 Der Vater eines Clowns
42 7 Albträume
43 8 Lisas Pony
44 9 Das Seifenkistenrennen
45 10 Das Erfolgsrezept
46 11 Kraftwerk zu verkaufen
47 12 Blick zurück aufs Eheglück
48 13 Wer anderen einen Brunnen gräbt
49 14 Der Wettkönig
50 15 Wenn Mutter streikt
51 16 Die Kontaktanzeige
52 17 Der Wunderschläger
53 18 Der Eignungstest
54 19 Auf den Hund gekommen
55 20 Homer auf Abwegen
56 21 Bis dass der Tod euch scheidet
57 22 Der Fahrschüler
58 23 Liebe und Intrige
59 24 Der vermisste Halbbruder
Staffel 4
60 1 Krise im Kamp Krusty
61 2 Bühne frei für Marge
62 3 Ein gotteslästerliches Leben
und weitere 700 Einträge
|
zB:
52 17 Der Wunderschläger wird gesucht, ersten 2 ignorieren somit nur noch Der und Wunderschläger
Ergebniss
| /home/user/Videos/Serien/Die_Simpsons/Die-Simpsons/Testordner/Test Ordner/die - Simpsons Der Wunderschläger.mkv
/home/user/Videos/Serien/Die_Simpsons/Die-Simpsons/Testordner/Testordner1/die - Simpsons Der Wunderschläger.mkv
/home/user/Videos/Serien/Die_Simpsons/Die-Simpsons/Testordner/Testordner2/die - Simpsons Der Wunderschläger.mkv
/home/user/Videos/Serien/Die_Simpsons/Die-Simpsons/Testordner/die - Simpsons Der Wunderschläger.mkv
|
Ok hier ist noch ein Fehler da die Datei 4 mal gefunden wurde muss das gesamte Script 4 mal laufen das ist aber erst mal nebensächlich. Ziel Ordner:
ORF1, Pro7 oder ProSieben
jetzt wird die erste Zeile genommen als Quellpfad und Datei und in den Ziel/zuvor ermittelten Senderordner Verschoben und in 52 17 Der Wunderschläger.mkv umbenannt. Hierbei kommen jetzt die Leerzeichen Spiel Warum 4 mal da es von unterschiedlichen Sendern kommt das hat mit der späteren Weiterbearbeitung zu tun doppelte aufnahmen gleicher Sender werden somit auch gleich gelöscht. Grüße Phanom
|
user_unknown
Anmeldungsdatum: 10. August 2005
Beiträge: 17548
Wohnort: Berlin
|
Slashes in Dateinamen gibt es nicht und kann es nicht geben, da sie ein reserviertes Zeichen sind, um Ordner von Unterordnern und Dateien abzugrenzen. Kann es sein, dass Du das mit \\ verwechselst? Der Backslash wird mit einem n zusammen \n oft als Zeichenkombination, die einen Zeilenumbruch darstellen soll, verwendet. In Wahrheit ist es nur ein Zeichen,
| echo -e "Ein \nTest"
Ein
Test
echo -e "Ein \nTest" | hd
00000000 45 69 6e 20 0a 54 65 73 74 0a |Ein .Test.|
0000000a
|
Hier als 0x0a oder dezimal 10 sichtbar gemacht.
|
rklm
Projektleitung
Anmeldungsdatum: 16. Oktober 2011
Beiträge: 12801
|
user_unknown schrieb: Slashes in Dateinamen gibt es nicht und kann es nicht geben, da sie ein reserviertes Zeichen sind, um Ordner von Unterordnern und Dateien abzugrenzen. Kann es sein, dass Du das mit \\ verwechselst? Der Backslash wird mit einem n zusammen \n oft als Zeichenkombination, die einen Zeilenumbruch darstellen soll, verwendet. In Wahrheit ist es nur ein Zeichen,
| echo -e "Ein \nTest"
Ein
Test
echo -e "Ein \nTest" | hd
00000000 45 69 6e 20 0a 54 65 73 74 0a |Ein .Test.|
0000000a
|
Hier als 0x0a oder dezimal 10 sichtbar gemacht.
In Deinem Beispiel enthält die Stringkonstante allerdings tatsächlich zwei Zeichen, nur, dass echo durch die Option -e dazu aufgefordert wird, die als ein Zeichen auszugeben: | $ echo "Ein \nTest"
Ein \nTest
|
Und man kann auch tatsächlich Dateien mit solchen Zeichen (also, sowohl Backslash als auch Newline) erzeugen: 1
2
3
4
5
6
7
8
9
10
11
12
13 | $ ls -a
./ ../
$ touch "Ein \nTest"
$ ls -a
./ ../ 'Ein \nTest'
$ touch "Ein
> Test"
$ ls -a
./ ../ 'Ein \nTest' 'Ein '$'\n''Test'
$ for f in *; do echo ">> $f"; done
>> Ein \nTest
>> Ein
Test
|
Aber Slashes (also "/") gehen nicht, wie Du schon sagst.
|
user_unknown
Anmeldungsdatum: 10. August 2005
Beiträge: 17548
Wohnort: Berlin
|
rklm schrieb:
In Deinem Beispiel enthält die Stringkonstante allerdings tatsächlich zwei Zeichen, nur, dass echo durch die Option -e dazu aufgefordert wird, die als ein Zeichen auszugeben:
Willst Du jetzt spitzfindiger sein als ich? Das wird nicht leicht! Schau, es hat den String nicht gegeben, bevor ich ihn geschrieben habe, und ich habe erst "-e" geschrieben, dann erst "\n". Backslash-n ohne -e hat es bei mir nie gegeben.
Und man kann auch tatsächlich Dateien mit solchen Zeichen (also, sowohl Backslash als auch Newline) erzeugen:
Das hat niemand bestritten aber es war nicht mein Thema.
Aber Slashes (also "/") gehen nicht, wie Du schon sagst.
Ich könnte jetzt darauf abheben, dass Dein touch-Kommando nur dank der Anführungsstriche funktioniert und dass, wenn Du die weglässt, Du eigentlich zwei Stringkonstanten hast. Die Frage wäre, ob Du dann die Unsitte, Strings in der Shell in Anführungsstriche zu setzen, zur Norm erklärst, um deine Aussage zu verteidigen. ☺
|
seahawk1986
Anmeldungsdatum: 27. Oktober 2006
Beiträge: 11176
Wohnort: München
|
Ok, ich denke jetzt habe ich eine ungefähre Vorstellung davon, was du erreichen willst - ich denke das kann man deutlich vereinfachen: Angenommen, man hat diese Konstellation:
$ tree Die_Simpsons/
Die_Simpsons/
└── Die-Simpsons
├── Staffel.txt
└── Testordner
├── 303-Der Versager.mkv
├── Bart schlägt eine Schlacht-USA-2002.mkv
├── Der Eignungstest comediy, USA-2002.mkv
├── Der Wunderschläger.mkv
├── Die-Simpsons, Die Kontaktanzeige.mkv
├── Homer als Frauenheld Comedy, Altersfreigabe 12.mkv
├── Kampf dem Ehekrieg.mkv
├── Lisas Pony.mkv
├── Simpsons.Die Kontaktanzeige.mkv
├── Test Ordner
│ ├── 303-Der Versager.mkv
│ ├── Bart schlägt eine Schlacht-USA-2002.mkv
│ ├── Der Eignungstest comediy, USA-2002.mkv
│ ├── die - Simpsons Der Wunderschläger Comedy USA-2002.mkv
│ ├── Die-Simpsons, Die Kontaktanzeige.mkv
│ ├── Homer als Frauenheld Comedy, Altersfreigabe 12.mkv
│ ├── Kampf dem Ehekrieg.mkv
│ ├── Lisas Pony.mkv
│ └── Simpsons.Die Kontaktanzeige.mkv
├── Testordner1
│ ├── 303-Der Versager.mkv
│ ├── Bart schlägt eine Schlacht-USA-2002.mkv
│ ├── Der Eignungstest comediy, USA-2002.mkv
│ ├── die - Simpsons Der Wunderschläger.mkv
│ ├── Die-Simpsons, Die Kontaktanzeige.mkv
│ ├── Homer als Frauenheld Comedy, Altersfreigabe 12.mkv
│ ├── Kampf dem Ehekrieg.mkv
│ ├── Lisas Pony.mkv
│ └── Simpsons.Die Kontaktanzeige.mkv
└── Testordner2
├── 303-Der Versager.mkv
├── Bart schlägt eine Schlacht-USA-2002.mkv
├── Der Eignungstest comediy, USA-2002.mkv
├── die Simpsons Der Wunderschläger.mkv
├── Die-Simpsons, Die Kontaktanzeige.mkv
├── Homer als Frauenheld Comedy, Altersfreigabe 12.mkv
├── Kampf dem Ehekrieg.mkv
├── Lisas Pony.mkv
└── Simpsons.Die Kontaktanzeige.mkv
Dann kann man mit diesem Skript (und dem Schnipsel aus der Episodenliste)
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44 | #!/usr/bin/bash
Pfad=~/Videos/Serien/Die_Simpsons/Die-Simpsons/Die_Simpsons/test/
Ziel=Videos/Simpsons
#Zeilenumbruch in dateinamen entfernen
find "$Pfad" -name $'*\n*' -exec rename $'s|\n| |g' '{}' \;
#vorhandene Dateien mit Sender-Information
IFS=$'\n' data=( $(mediainfo --Inform="General;%TVCHANNEL%|%CompleteName%\n" "$Pfad") ) # Aufnahmen nach Sender und Name auslesen, Werte im Eintrag mit Pipe-Symbol trennen
# Trenne absolute und relative Episodennummern und Titel mit Tabs, um die Verarbeitung zu erleichtern
sed -i 's/ /\t/g;s/\t/ /3g' "${Pfad}/Staffel.txt" # first replace all spaces with tabs then replace tabs with spaces starting at the third tab
# Laufe über die Staffel.txt, suche passende Aufnahmen und kopiere sie
while read -r line
do
# suche nach Staffelangabe
if [[ "$line" =~ ^Staffel[[:space:]]*[[:digit:]] ]]
then
read -r _ Staffel_Nr <<< "$line"
elif [[ $line =~ ^[[:digit:]]*[[:blank:]]*[[:digit:]]* ]] # suche nach Episodeneintrag
then
# trenne Episodennummern und Titel
IFS=$'\t' read -r Laufende_Nummer Episoden_Nummer Titel <<< "$line"
# Verarbeite Treffer für den Titel
while IFS='|' read -r Sender Aufnahmepfad
do
Sender=$(sed 's/ *HD *//g' <<< "$Sender") # "HD" aus Sendernamen entfernen
Zielverzeichnis="${Ziel}/${Sender}/"
mkdir -p "$Zielverzeichnis"
Erweiterung="${Aufnahmepfad##*.}"
Zielpfad="$Zielverzeichnis/${Laufende_Nummer} ${Episoden_Nummer} ${Titel}.${Erweiterung}"
if [ -f "$Zielpfad" ]
then
echo "'$Zielpfad' existiert, entferne '$Aufnahmepfad'"
rm "$Aufnahmepfad"
else
echo "verschiebe '$Aufnahmepfad' nach '$Zielpfad'"
mv "$Aufnahmepfad" "$Zielpfad"
fi
done < <( printf '%s\n' "${data[@]}" | grep -F "$Titel" )
fi
done < "${Pfad}/Staffel.txt"
|
so ein Ergebnis erzielen:
$ tree Videos/
Videos/
└── Simpsons
├── ORF1
│ ├── 51 16 Die Kontaktanzeige.mkv
│ ├── 52 17 Der Wunderschläger.mkv
│ └── 53 18 Der Eignungstest.mkv
├── Pro7 MAXX
│ └── 52 17 Der Wunderschläger.mkv
└── ProSieben
├── 43 8 Lisas Pony.mkv
├── 51 16 Die Kontaktanzeige.mkv
└── 52 17 Der Wunderschläger.mkv
4 directories, 7 files
|
Phanom
(Themenstarter)
Anmeldungsdatum: 28. April 2013
Beiträge: 222
|
Hallo Zusammen, user_unknown und rklm ich verwirre euch noch mehr ja es sind keine Slash im Namen ich sagte ja newline ☺ ich habe gestern über einen Variable die Daten mir in Terminal anzeigen lassen dann wurde es so angezeigt | ProSieben HD/home/user/Videos/Serien/Die_Simpsons/1n/Der Stoff, aus dem die Träume sind / Comedy, USA 2012 / Altersfreigabe: ab 12.mkv
|
ich musste auf die heutigen Aufnahmen warten um zu zeigen was ich meinte, Ausgabe über ls nicht über eine Variable
|
'El Barto'$'\n''Comedy, USA 2013'$'\n''Altersfreigabe: ab 12.mkv'
'Friss meine Sports.mkv'
'Homer auf Abwegen.mkv'
'Unter dem Maulbeerbaum'$'\n''Comedy, USA 2012'$'\n''Altersfreigabe: ab 12.mkv'
|
noch ein Grund warum ich mir mit Variablen und quoting so schwer tue 😉 wenn ich den Namen aus den Eigenschaften raus Kopiere und in Gedit einfüge sieht es so aus El Barto Comedy, USA 2013 Altersfreigabe: ab 12.mkv im Anhang noch ein Snipping von den Eigenschaften Grüße Phanom
- Bilder
|
Phanom
(Themenstarter)
Anmeldungsdatum: 28. April 2013
Beiträge: 222
|
Hallo Zusammen seahawk1986 das du das Script so sehr eingekürzt hast zeigt mir das ich noch viiiiiiiiiiiiiiiel lernen muss. ich versuche es gerade auseinander zu nehmen um zu verstehen was was macht ☺ ich habe es über die heutigen Aufnahmen laufen lassen und da ist mir was aufgefallen. meine Frage da ich es nicht ganz verstanden habe. OK Nummer und Staffelnummer werden separiert wird dann jedes Wort einzeln gesucht in den Dateinamen und in der gleichen Reihenfolge oder wird die Reihenfolge nicht beachtet?
Was passiert mit den Dateien die nicht in der Staffel liste gefunden wurde ich vermute die werden einfach gelöscht und was ist mit den die keine Staffelnummer haben? warum diese Fragen:
den Testordner den ich eben verwendet habe ist leer klingt gut oder auch nicht es sind auch Dateien verschwunden die keine mkv sind unter anderem auch die Staffel.txt kein Thema habe diese noch 3 mal aber interessant wäre es schon ob man die Dateien die nicht in der Staffel.txt stehen auch nicht anfasst, ja ich habe die Staffel.txt fast vollständig aber eben nur fast. hier noch paar Infos aus dem Terminal
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 | verschiebe '/home/user/Videos/Serien/Die_Simpsons/n/Homer auf Abwegen.mkv' nach '/home/user/Videos/Serien/Die_Simpsons/ORF1//55 20 Homer auf Abwegen.mkv'
verschiebe '/home/user/Videos/Serien/Die_Simpsons/n/Unter dem Maulbeerbaum Comedy, USA 2012 Altersfreigabe: ab 12.mkv' nach '/home/user/Videos/Serien/Die_Simpsons/ProSieben//499 13 Unter dem Maulbeerbaum.mkv'
verschiebe '/home/user/Videos/Serien/Die_Simpsons/n/El Barto Comedy, USA 2013 Altersfreigabe: ab 12.mkv' nach '/home/user/Videos/Serien/Die_Simpsons/ProSieben//501 15 El Barto.mkv'
verschiebe '/home/user/Videos/Serien/Die_Simpsons/n/Friss meine Sports.mkv' nach '/home/user/Videos/Serien/Die_Simpsons/ORF1//656 17 Friss meine Sports.mkv'
verschiebe '/home/user/Videos/Serien/Die_Simpsons/n/El Barto Comedy, USA 2013 Altersfreigabe: ab 12.mkv' nach '/home/user/Videos/Serien/Die_Simpsons/ProSieben//Spezial .mkv'
mv: Aufruf von stat für '/home/user/Videos/Serien/Die_Simpsons/n/El Barto Comedy, USA 2013 Altersfreigabe: ab 12.mkv' nicht möglich: Datei oder Verzeichnis nicht gefunden
verschiebe '/home/user/Videos/Serien/Die_Simpsons/n/Friss meine Sports.mkv' nach '/home/user/Videos/Serien/Die_Simpsons/ORF1//Spezial .mkv'
mv: Aufruf von stat für '/home/user/Videos/Serien/Die_Simpsons/n/Friss meine Sports.mkv' nicht möglich: Datei oder Verzeichnis nicht gefunden
verschiebe '/home/user/Videos/Serien/Die_Simpsons/n/Homer auf Abwegen.mkv' nach '/home/user/Videos/Serien/Die_Simpsons/ORF1//Spezial .mkv'
mv: Aufruf von stat für '/home/user/Videos/Serien/Die_Simpsons/n/Homer auf Abwegen.mkv' nicht möglich: Datei oder Verzeichnis nicht gefunden
verschiebe '/home/user/Videos/Serien/Die_Simpsons/n/Staffel.txt' nach '/home/user/Videos/Serien/Die_Simpsons///Spezial .txt'
verschiebe '/home/user/Videos/Serien/Die_Simpsons/n/Unter dem Maulbeerbaum Comedy, USA 2012 Altersfreigabe: ab 12.mkv' nach '/home/user/Videos/Serien/Die_Simpsons/ProSieben//Spezial .mkv'
mv: Aufruf von stat für '/home/user/Videos/Serien/Die_Simpsons/n/Unter dem Maulbeerbaum Comedy, USA 2012 Altersfreigabe: ab 12.mkv' nicht möglich: Datei oder Verzeichnis nicht gefunden
verschiebe '/home/user/Videos/Serien/Die_Simpsons/n/El Barto Comedy, USA 2013 Altersfreigabe: ab 12.mkv' nach '/home/user/Videos/Serien/Die_Simpsons/ProSieben// .mkv'
mv: Aufruf von stat für '/home/user/Videos/Serien/Die_Simpsons/n/El Barto Comedy, USA 2013 Altersfreigabe: ab 12.mkv' nicht möglich: Datei oder Verzeichnis nicht gefunden
verschiebe '/home/user/Videos/Serien/Die_Simpsons/n/Friss meine Sports.mkv' nach '/home/user/Videos/Serien/Die_Simpsons/ORF1// .mkv'
mv: Aufruf von stat für '/home/user/Videos/Serien/Die_Simpsons/n/Friss meine Sports.mkv' nicht möglich: Datei oder Verzeichnis nicht gefunden
verschiebe '/home/user/Videos/Serien/Die_Simpsons/n/Homer auf Abwegen.mkv' nach '/home/user/Videos/Serien/Die_Simpsons/ORF1// .mkv'
mv: Aufruf von stat für '/home/user/Videos/Serien/Die_Simpsons/n/Homer auf Abwegen.mkv' nicht möglich: Datei oder Verzeichnis nicht gefunden
verschiebe '/home/user/Videos/Serien/Die_Simpsons/n/Staffel.txt' nach '/home/user/Videos/Serien/Die_Simpsons/// .txt'
mv: Aufruf von stat für '/home/user/Videos/Serien/Die_Simpsons/n/Staffel.txt' nicht möglich: Datei oder Verzeichnis nicht gefunden
verschiebe '/home/user/Videos/Serien/Die_Simpsons/n/Unter dem Maulbeerbaum Comedy, USA 2012 Altersfreigabe: ab 12.mkv' nach '/home/user/Videos/Serien/Die_Simpsons/ProSieben// .mkv'
mv: Aufruf von stat für '/home/user/Videos/Serien/Die_Simpsons/n/Unter dem Maulbeerbaum Comedy, USA 2012 Altersfreigabe: ab 12.mkv' nicht möglich: Datei oder Verzeichnis nicht gefunden
|
es wurde jede Datei 3 mal versucht zu verschieben Beispiel Friss meine Sports.mkv in den Zeilen 4 9 und 18 interessant ist auch Staffel.txt Zeile 13 22 und 24. Anbei mal die Staffetxt am ende wo noch offen ist oder Spezial Sachen stehen, wenn es nur an den letzten Zeilen liegt, die kann ich raus nehmen habe noch eine Original Datei die nicht verwendet wird oder was ist mit solchen Staffelteilen 128 25 Wer erschoss Mr. Burns? – Teil 1 Staffel 7 129 1 Wer erschoss Mr. Burns? – Teil 2 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 | 705 21 Codename G.R.A.M.P.A.
706 22 Moe Szyslak und das Königreich des Kristallschädels
Staffel 33
707 1 Millennium-Bug - Das Musical
708 2 Bart ist im Knast
709 3 A Nightmare on Elm Tree
710 4 Moe-Zart
711 5 Bauchgefühl
712 6 A Serious Flanders (Teil 1)
713 7 –
714 8 –
715 9 –
716 10 –
717 11 –
718 12 –
Spezial
1 1 The Simpsons 20th Anniversary Special – In 3-D! On Ice!
2 2 Eine Dokumentation über das kulturelle Phänomen der Simpsons.
|
Viele Grüße Phanom
|
seahawk1986
Anmeldungsdatum: 27. Oktober 2006
Beiträge: 11176
Wohnort: München
|
ls versucht da in neueren Versionen eine Repräsentation des Dateinamens anzuzeigen, den man wieder in eine Shell kopieren kann (vgl. https://www.gnu.org/software/coreutils/quotes.html) - d.h. wenn dieser String von der Shell evaluiert wird, hat der wieder die korrekte interne Repräsentation. Das ganze Problem entsteht dadurch, dass die Shell und viele der gängigen Tools dafür zeilenbasiert arbeiten und die Zeilen zur Interpretation am IFS (Internal Field Separator) aufgetrennt werden (um die einzelnen Elemente in einer Zeile voneinander abtrennen zu können), weshalb bestimmte Zeichen escaped oder gequoted werden müssen, damit die Shell das richtige tut. Den ganzen Zirkus kann man sich durch die Nutzung einer anderen Skriptsprache ersparen - ich mag für sowas Python3 - mit dem pathlib-Modul ist der Umgang mit Pfaden sehr bequem geworden. Phanom schrieb:
OK Nummer und Staffelnummer werden separiert wird dann jedes Wort einzeln gesucht in den Dateinamen und in der gleichen Reihenfolge oder wird die Reihenfolge nicht beachtet?
Es wird nach dem kompletten Titel im Dateipfad gesucht.
Was passiert mit den Dateien die nicht in der Staffel liste gefunden wurde ich vermute die werden einfach gelöscht und was ist mit den die keine Staffelnummer haben?
Die werden nicht angetastet - die Abfolge ist folgende: die Ausgabe von mediainfo (das die Dateien im Verzeichnis $Pfad rekursiv durchsucht) wird in einem Array gespeichert. Das Skript liest die Staffelliste aus "${Pfad}/Staffel.txt" und sucht dann für jeden Episodentitel nach Treffern in dem Array der mediainfo-Ausgaben. Wenn ein Treffer gefunden wird, wird er mit mv nach "$Zielverzeichnis/${Laufende_Nummer} ${Episoden_Nummer} ${Titel}.${Erweiterung}" verschoben. Existiert dieser Pfad bereits (also wenn es schon eine Aufnahme unter diesem Pfad gibt), wird das Video gelöscht (Zeile 34-37).
warum diese Fragen:
den Testordner den ich eben verwendet habe ist leer klingt gut oder auch nicht es sind auch Dateien verschwunden die keine mkv sind unter anderem auch die Staffel.txt kein Thema habe diese noch 3 mal aber interessant wäre es schon ob man die Dateien die nicht in der Staffel.txt stehen auch nicht anfasst, ja ich habe die Staffel.txt fast vollständig aber eben nur fast.
Eventuell bietet https://www.eplists.de/eplist.cgi?action=show&file=Die%20Simpsons da einen brauchbaren Ausgangspunkt für dich (bei dem dort verwendeten Schema muss man ein paar Besonderheiten (wie alternative Episodennamen) beim Parsen beachten) - die Seite hat zu vielen Serien solche Episodenlisten: https://www.eplists.de/.
hier noch paar Infos aus dem Terminal
| verschiebe '/home/user/Videos/Serien/Die_Simpsons/n/El Barto Comedy, USA 2013 Altersfreigabe: ab 12.mkv' nach '/home/user/Videos/Serien/Die_Simpsons/ProSieben//Spezial .mkv'
|
Da ist das Skript wohl beim Einlesen der Staffel.txt verrutscht, weil der glob-Ausdruck zu ungenau war.
> verschiebe '/home/user/Videos/Serien/Die_Simpsons/n/Staffel.txt' nach '/home/user/Videos/Serien/Die_Simpsons/// .txt'
> mv: Aufruf von stat für '/home/user/Videos/Serien/Die_Simpsons/n/Staffel.txt' nicht möglich: Datei oder Verzeichnis nicht gefunden
Da macht dein mediainfo wohl etwas anderes als mein mediainfo - wenn man nur mkv-Dateien haben will, müsste man entweder die Array-Einträge filtern oder z.B. mit find die Dateien suchen und dann für jeden Treffer einzeln mediainfo aufrufen.
Anbei mal die Staffetxt am ende wo noch offen ist oder Spezial Sachen stehen
Ok, das ist dann natürlich ein Problem, wenn man die Staffelnamen nicht den Zielpfad mit einbaut und die Nummerierung der Spezial-Folgen die selbe ist wie die Nummerierung der einzelnen Staffeln Das sollte zumindest das Problem mit den Einträgen in der Staffel.txt lösen, die nicht zwei Nummern gefolgt vom Titel sind:
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44 | #!/usr/bin/bash
Pfad=~/Videos/Serien/Die_Simpsons/Die-Simpsons/Die_Simpsons/test/
Ziel=Videos/Simpsons
#Zeilenumbruch in dateinamen entfernen
find "$Pfad" -name $'*\n*' -exec rename $'s|\n| |g' '{}' \;
#vorhandene Dateien mit Sender-Information
IFS=$'\n' data=( $(mediainfo --Inform="General;%TVCHANNEL%|%CompleteName%\n" "$Pfad") ) # Aufnahmen nach Sender und Name auslesen, Werte im Eintrag mit Pipe-Symbol trennen
# Trenne absolute und relative Episodennummern und Titel mit Tabs, um die Verarbeitung zu erleichtern
sed -i 's/ /\t/g;s/\t/ /3g' "${Pfad}/Staffel.txt" # first replace all spaces with tabs then replace tabs with spaces starting at the third tab
# Laufe über die Staffel.txt, suche passende Aufnahmen und kopiere sie
while read -r line
do
# suche nach Staffelangabe
if [[ "$line" =~ ^Staffel[[:space:]]*[[:digit:]] ]]
then
read -r _ Staffel_Nr <<< "$line"
elif [[ $line =~ ^[[:digit:]][[:digit:]]*[[:blank:]][[:blank:]]*[[:digit:]][[:digit:]]* ]] # suche nach Episodeneintrag
then
# trenne Episodennummern und Titel
IFS=$'\t' read -r Laufende_Nummer Episoden_Nummer Titel <<< "$line"
# Verarbeite Treffer für den Titel
while IFS='|' read -r Sender Aufnahmepfad
do
Sender=$(sed 's/ *HD *//g' <<< "$Sender") # "HD" aus Sendernamen entfernen
Zielverzeichnis="${Ziel}/${Sender}/"
mkdir -p "$Zielverzeichnis"
Erweiterung="${Aufnahmepfad##*.}"
Zielpfad="$Zielverzeichnis/${Laufende_Nummer} ${Episoden_Nummer} ${Titel}.${Erweiterung}"
if [ -f "$Zielpfad" ]
then
echo "'$Zielpfad' existiert, entferne '$Aufnahmepfad'"
rm "$Aufnahmepfad"
else
echo "verschiebe '$Aufnahmepfad' nach '$Zielpfad'"
mv "$Aufnahmepfad" "$Zielpfad"
fi
done < <( printf '%s\n' "${data[@]}" | grep -F "$Titel" )
fi
done < "${Pfad}/Staffel.txt"
|
|