Grep

使用 bash 列出所有比特率超過 320 kbps 的 mp3 文件

  • February 29, 2020

我想獲取所有比特率 > 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

這是一個有效的 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我周圍的一些隨機文件,包括名稱中帶有空格的文件。

引用自:https://unix.stackexchange.com/questions/570462