
Wie kann ich das folgende Skript verwenden, umrekursivKonvertieren Sie ein Verzeichnis, das enthält .mp4
( .png
nur 1 Frame).
Momentan wird nur das Verzeichnis konvertiert. Es ist nicht rekursiv.
for i in *.mp4
do name=`echo "$i" | cut -d'.' -f1`
echo "$name"
ffmpeg -i "$i" -r 0.0033 -vf scale=-1:1024 -vcodec png "${name}.png"
done
Antwort1
find . -type f -name '*.mp4' -exec sh -c '
name="${1%.*}"
echo "$name"
ffmpeg -i "$1" -r 0.0033 -vf scale=-1:1024 -vcodec png "${name}.png"
' find-sh {} \;
Anmerkungen:
- In Ihrem Originalcode
name=`echo "$i" | cut -d'.' -f1`
befindet sich ein Fragment von eher geringer Qualität. Es schneidet beim ersten Punkt ab, das scheint falsch zu sein. Es ist nicht das einzige Problem, aber ich werde nicht näher darauf eingehen. Wenn Sie eine Erweiterung entfernen möchten, ist der richtige Wegname="${i%.*}"
: *.mp4
wird zitiert wegenDas.- GeistDas.
find-sh
wird erklärtHier.find
steigt in Unterverzeichnisse ab, folgt aber standardmäßig keinen symbolischen Links. Wenn alle „Unterverzeichnisse“ in.
der Tat Links zu Verzeichnissen sind, könnten Sie fälschlicherweise annehmen, dass das Tool im Allgemeinen nicht absteigt. Aktivieren Sieman 1 find
die-L
Option .