Ich versuche, Untertitel für mehrere MKV-Dateien hinzuzufügen. Dazu verwende ich dieses Skript:
for file in *.mkv; do "/Applications/Mkvtoolnix-7.0.0.app/Contents/MacOS/mkvmerge" -o "${file%\.*}(1).mkv" "(" "$file" ")" "(" "${file%\.*}.srt" ")" ; rm $file
Es funktioniert nur für das Stammverzeichnis einwandfrei. Aber es funktioniert nicht für alle Dateien im Unterordner. Bitte helfen Sie mir, es für alle Dateien im Unterordner zum Laufen zu bringen.
Antwort1
Sie könnten etwa Folgendes tun:
# make bash function to do conversion and deletion
conv() {
/Applications/Mkvtoolnix-7.0.0.app/Contents/MacOS/mkvmerge -o "${1%\.*}(1).mkv" "(" "$1" ")" "(" "${1%\.*}.srt" ")"
rm "${1}"
}
# make conv function available to xargs
export -f conv
# recursively convert every .mkv file in current directory
find . -name "*.mkv" -type f -print0 | xargs -0 -n1 -I% bash -c 'conv "$@"' _ %
Antwort2
Wenn Sie verwenden bash
,
shopt -s globstar für Datei in **/*.mkv Tun (Ihre MKVmerge-Befehle usw.) Erledigt
Durch Festlegen der globstar
Shell-Option werden alle Verzeichnisse und Unterverzeichnisse bash
erweitert .**/
PS Setzen Sie alle Shell-Variablenreferenzen immer in Anführungszeichen (es sei denn, Sie haben einen sehr guten Grund, dies nicht zu tun, und Sie sind sicher, dass Sie wissen, was Sie tun). Sagen Sie insbesondere rm "$file"
anstelle von rm $file
.