ディレクトリとサブディレクトリの各ファイルのビデオファイルサイズとビデオ期間の比率を計算する方法

ディレクトリとサブディレクトリの各ファイルのビデオファイルサイズとビデオ期間の比率を計算する方法

LinuxでBASHスクリプトを作成したいと思います。これまで私は

#!/bin/bash
for file in $(find "/home/drive1/videos" -type f -name '*.mp4' -o -name '*.avi' -o -name '*.mov'); do
  size=$(stat -c%s "$file")
  duration=$(ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 "$file")
  ratio=$(echo "scale=2; $size / $duration" | bc)
  echo "$file: size=$size, duration=$duration, ratio=$ratio"
done

ただし、これを行うとエラーが発生します。

stat: '/home/drive1/videos/file' を statx できません。そのファイルまたはディレクトリはありません。 /home/drive1/videos/file: ファイルまたはディレクトリが存在しません (standard_in) 1: 構文エラー /home/drive1/videos/ file : size=, period=, scale=

しかし、ただ実行するとfind

find . -type f -name '*.mp4' -o -name '*.avi' -o -name '*.mov'

ファイルが表示されます。

./file.mov

ffprobe は、次のコマンドを使用してビデオファイルの持続時間を秒単位で表示するため、機能します。

ffprobe -v quiet -of csv=p=0 -show_entries format=duration file.mov 

40.707333

私が何を間違っているのでしょうか?どんなアイデアがありますか?助けてくれてありがとう!

乾杯

ベストアンサー1

ターゲットファイルの拡張子が正しいことを確認するには、式を修正して括弧を追加します。

find . -type f '(' -name '*.mp4' -o -name '*.avi' -o -name '*.mov' ')'

おすすめ記事