ビットレートが320を超えるすべてのmp3ファイルのリストを取得したいと思います。 EXIFtool -AudioBitrateコマンドの出力に正規表現を適用する方法がわかりません。
find . -type f -name '*.mp3' -print0 | while IFS= read -r -d '' i; do
BITRATE=echo $(exiftool -AudioBitrate "$i")| grep -q '#([0-9]+) kbps#';
if $BITRATE > 320
then echo $BITRATE "$i"
fi
done
ベストアンサー1
これは有効なbashスクリプトです。基本的にこれは少し調整後に得ることができます:
#!/bin/bash
set -o pipefail
find . -type f -name "*.mp3" -print0 | while IFS= read -r -d '' file; do
BITRATE=$(exiftool -AudioBitrate "$file" | grep -Eo '[0-9]+ kbps' | sed 's/ kbps//')
if [[ $? -eq 0 ]] && [[ $BITRATE -ge 320 ]]; then
echo $BITRATE "$file"
fi
done
$BITRATE
変数を設定するときは、exiftool
パイプを介して直接実行し、それを使用して$(...)
出力をキャプチャします。次に、条件でBashの数値比較演算子を使用して、exiftool
->パイプラインが正常であること、ビットレートが十分に高いことを確認します。grep
.mp3
名前にスペースを含むファイルを含め、私が持っている任意のファイルを処理できることを確認しました。