Ich habe viele .mkv-Dateien
nightmare1.mkv
nightmare2.mkv
nightmare3.mkv
...
Ich verwende mkvmerge vom Terminal von Ubuntu aus, umeinzelDatei mit diesem Befehl
mkvmerge --split 1G --compression 0:none --compression 1:none --clusters-in-meta-seek -o "nightmare1.mkv" "nightmare1.mkv"
Der erste Albtraum ist Ausgabe, der zweite ist Eingabe
Ich bekomme diese Dateien
nightmare1-001.mkv
nightmare1-002.mkv
...
Ich versuche zu verstehen, wie ich teilen kannalle.mkv-Dateien in 1-GB-Stücke, weil ich bekommen will
nightmare1-001.mkv
nightmare1-002.mkv
...
nightmare2-001.mkv
nightmare2-002.mkv
...
nightmare3-001.mkv
nightmare3-002.mkv
...
Alle Albtraumfilme befinden sich im selben Ordner.
Wie soll ich den Befehl umschreiben? Das Problem ist, dass ich die einzelne MKV-Datei als Eingabe habe und als Ausgabe in eine Datei schreibe, aber ich möchte den Ordnerpfad als Eingabe festlegen, in dem sich die MKV-Dateien befinden, und alle neuen aufgeteilten MKV-Dateien in den Ordner schreiben.
Antwort1
Sie können eine Bash- for
Schleife verwenden, um diese Aufgabe zu lösen:
for file in ./source/*mkv; \
do \
echo mkvmerge --split 1G --compression 0:none --compression 1:none \
--clusters-in-meta-seek -o "./split/$(basename "$file")" "$file"; \
done
- Kopieren Sie alle Zeilen, fügen Sie sie im Terminal ein und führen Sie sie als einzelnen Befehl aus.
- Wenn Sie mit der Ausgabe des Probelaufs der Schleife zufrieden sind,Entfernen Sie den
echo
Befehlum die eigentlichen Operationen durchzuführen.
Im obigen Beispiel ./source/
handelt es sich um einen relativen Pfad zum Verzeichnis, in dem die Originaldateien gespeichert sind. Dies ./split/
ist der Zielpfad und muss vorab erstellt werden.
$file
Bei jeder Iteration sieht der Wert der Variablen wie folgt aus ./source/nightmare-i.mkv
. Die Befehlsersetzung $(basename "$file")
gibt nur den Dateinamen ohne Pfad zurück, d. h. nightmare-i.mkv
, daher sieht der Wert der Ausgabeoption wie folgt aus ./split/nightmare-i.mkv
.