Scriptproblem mit Leerstellen

Status
Für weitere Antworten geschlossen.

toller

Benutzer
Mitglied seit
06. Feb 2014
Beiträge
172
Punkte für Reaktionen
8
Punkte
18
Hallo,
habe ein Problem bei folgendem Script. Ich würde gerne den vollständigen Dateinamen - mit Leerstellen - aus der Quelldatei in die Zieldatei übernehmen.

cd /volume2/Downloadstation/s/
for I in *.ts; do ffmpeg -i $I -vcodec copy -acodec copy `echo $I | sed 's/.ts/.mp4/g'`; done​

Das Ganze funktioniert aber nur mit Dateien ohne Leerstellen.

Hat jemand einen Tipp?
 

Benares

Benutzer
Sehr erfahren
Mitglied seit
27. Sep 2008
Beiträge
13.803
Punkte für Reaktionen
3.761
Punkte
468
Schreib mal die beiden $I in doppelte Hochkomma ("$I")
 

toller

Benutzer
Mitglied seit
06. Feb 2014
Beiträge
172
Punkte für Reaktionen
8
Punkte
18
Danke dir für den Tipp. Jetzt ist aber meine DS schlagartig und ohne Vorwarnung abgeraucht und habe deshalb anderes zu tun... Versuche das mit dem Script später mal.
 

toller

Benutzer
Mitglied seit
06. Feb 2014
Beiträge
172
Punkte für Reaktionen
8
Punkte
18
OK, habs probiert: Hat nix gebracht :(
 

Benares

Benutzer
Sehr erfahren
Mitglied seit
27. Sep 2008
Beiträge
13.803
Punkte für Reaktionen
3.761
Punkte
468
Mmh, ich könnte mir vorstellen, dass da der hintere Teil die Probleme macht. Probier mal statt
Code:
for I in *.ts; do ffmpeg -i $I -vcodec copy -acodec copy `echo $I | sed 's/.ts/.mp4/g'`; done
Code:
for I in *.ts; do
  newname=`echo "$I" | sed 's/.ts/.mp4/g'`
  ffmpeg -i "$I" -vcodec copy -acodec copy "$newname" 
done
oder
Code:
for I in *.ts; do
  oldname="$I"
  newname=`echo "$oldname" | sed 's/.ts/.mp4/g'`
  ffmpeg -i "$oldname" -vcodec copy -acodec copy "$newname" 
done
Ansonsten spiel einfach mal ein wenig rum. Man muss nicht immer gleich alles in einer Zeile machen wollen. Das erleichtert die Fehlersuche. Etwas zusammenfassen kannst du hinterher immer noch.

PS: Nicht getestet - einfach nur so aus dem Kopf hingeschrieben. Ich kenne nicht mal ffmpeg.
 
Zuletzt bearbeitet:

toller

Benutzer
Mitglied seit
06. Feb 2014
Beiträge
172
Punkte für Reaktionen
8
Punkte
18
Nachdem ich meine DS wieder komplett neu aufsetzen musste, habe ich jetzt eine Lösung gefunden:

Es sollen bei rund 200 von 2000 Filmen
zuerst die Leerzeichen in "_" umgeschrieben,
dann von .ts ins .mp4 Format transkodiert,
wieder die Leerzeichen zurückgesetzt und
schließlich in einen Ordner verschoben werden.

Damit klappt das jetzt ganz gut:

cd /volume2/Downloadstation/ts/
for file in *' '*.ts; do
mv "$file" "$(echo $file | sed -e 's/ /_/g')";
done ;
for I in *.ts; do
ffmpeg -y -i $I -c:v copy `echo $I | sed 's/.ts/.mp4/g'`;
done ;
mv *.mp4 /volume2/Downloadstation/ts/mp4/ ;
cd /volume2/Downloadstation/ts/mp4/
for file in *'_'*; do
mv "$file" "$(echo $file | sed -e 's/_/ /g')"; done ;


Pro ca. 4gb Film braucht die 716+II ungefähr 10-15 Minuten.

Grüßle


EDIT:
Der Einzug klappt hier micht so wirklich. Im DS Aufgabenplaner habe ich das Script sowieso komplett ohne Einzüge - sieht ja keiner :_)

EDIT 2:
Einen kleinen Fehler gibt es noch: Es werden alle .ts in mp4 umgeschrieben. Das heißt, dass auch beispielsweise das Wort "nichts" zu "nicmp4" wird.
Damit könnte ich aber leben, weil es sich um sehr wenig Dateien handelt.
 
Zuletzt bearbeitet:

dil88

Benutzer
Contributor
Sehr erfahren
Mitglied seit
03. Sep 2012
Beiträge
30.695
Punkte für Reaktionen
2.106
Punkte
829
Versuche bitte einmal den Extension-Punkt zu escapen - also \.ts statt .ts.
 

toller

Benutzer
Mitglied seit
06. Feb 2014
Beiträge
172
Punkte für Reaktionen
8
Punkte
18
Genau das war es - Alles läuft jetzt perfekt. Inzwischen ist alles vollautomatisch und im Hintergrund umgewandelt und wieder abgelegt.

Danke @Benares und @dil88 für eure Hilfe!

CU
 

PsychoHH

Benutzer
Mitglied seit
03. Jul 2013
Beiträge
2.967
Punkte für Reaktionen
4
Punkte
78
dil88 nur mal so, wäre es nicht besser er würde es mit $ als Ende setzen?
Theoretisch würde sonst ja nicht direkt die Endung genutzt und er müsste auch nicht global nutzen.
 

dil88

Benutzer
Contributor
Sehr erfahren
Mitglied seit
03. Sep 2012
Beiträge
30.695
Punkte für Reaktionen
2.106
Punkte
829
Klar, \.ts$ wäre noch besser.
 

PsychoHH

Benutzer
Mitglied seit
03. Jul 2013
Beiträge
2.967
Punkte für Reaktionen
4
Punkte
78
Na dann habe ich doch was gelernt in der letzten Zeit :)
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat