bashを使用してビットレートが320kbpsを超えるすべてのmp3ファイルを一覧表示する

bashを使用してビットレートが320kbpsを超えるすべてのmp3ファイルを一覧表示する

ビットレートが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名前にスペースを含むファイルを含め、私が持っている任意のファイルを処理できることを確認しました。

おすすめ記事