
次のスクリプトをどのように使用すればいいでしょうか再帰的に.mp4
を含むディレクトリを変換します.png
(1 フレームのみ)。
現時点ではディレクトリのみを変換します。再帰的ではありません。
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
答え1
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 {} \;
ノート:
- 元のコードは
name=`echo "$i" | cut -d'.' -f1`
かなり品質の低いフラグメントです。最初のドットでカットされていますが、これは間違っているようです。これが唯一の問題ではありませんが、詳しく説明しません。拡張子を削除する場合、正しい方法は ですname="${i%.*}"
。 *.mp4
引用されているのはこれ。- 心これ。
find-sh
説明されているここ。find
はサブディレクトリに降りますが、デフォルトではシンボリック リンクをたどりません。 のすべての「サブディレクトリ」が.
実際にディレクトリにリンクしている場合、ツールは一般に降りないと誤って考える可能性があります。 オプションをチェックしてman 1 find
ください-L
。