@cptechnik: Was da mit $basis gemacht wird funktioniert nicht. Da muss die komplette Endung stehen, nicht nur der Punkt. Der muss auch nicht durch einen \ geschützt werden. Aber $basis wird dann ja auch nicht weiter verwendet, das kann also einfach raus.
Beim ersten Ausgeben der Episode ist ein Tippfehler im Variablennamen — es fehlt das s in $episode. Bei der zweiten Ausgabe ist die Variable ausserhalb der Anführungszeichen und damit „word splitting“ ausgesetzt.
Die doppelten Anführungszeichen werden zweimal durch ein Leerzeichen ersetzt. Man kann die ganzen Einzelzeichen die durch ein Leerzeichen ersetzt werden auch in einer Ersetzung zusammenfassen, wo man die Zeichen in […] einfasst.
Bei den Teilen die entfernt werden sollen, würde sich eine Schleife anbieten.
Für das abbrechen mit q ist ein komplettes if, then, fi IMHO ein bisschen übertrieben. Das könnte man mit Test und && kompakter lösen. Und ich würde da auch eher die Schleife abbrechen und nicht gleich das ganze Skript. Könnte ja sein, dass man irgendwann mal etwas am Schluss machen möchte.
Auch beim Verschieben bietet sich eine Schleife an.
Und es macht eigentlich immer Sinn alles ordentlich einzurücken um den Quelltext leichter verstehen zu können und keine Fehler einzubauen.
Ungetestet:
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 | #!/bin/bash
for file in ./*.ts ; do
echo "Diese Datei: $file"
episode=$(sed -n 3p "$file.meta" 2>/dev/null)
echo "1 episode = $episode"
episode=${episode::99}
echo "2 episode = $episode"
episode=${episode//[.,\!?\":&]/ }
episode=${episode//\// - }
for pattern in Reality-Dokusoap Altersfreigabe 'USA 200[6789]' ab 6; do
episode=${episode//$pattern/}
done
echo "3 episode = $episode"
alt=${file%.ts}
neu="$alt - $episode"
echo -----------------------------
echo "ALT $alt"
echo "NEU $neu"
echo -e "\033[1;33mSoll umbenannt werden?\033[0m"
read -rp "?" antwort
echo -e "\033[1;33m ANTWORT $antwort\033[0m"
[[ $antwort == "q" ]] && break
if [[ $antwort != "j" ]]; then
echo -e "\033[0;32m OK, BELASSEN \033[0m"
else
echo -e "\033[1;31m UMBENENNEN: \033[0m"
for extension in eit ts.{ap,sc,cuts,meta} ts; do
mv -v "$alt.$extension" "$neu.$extension"
done
fi
echo -
done
exit 0
|