Grep
使用 bash 列出所有比特率超過 320 kbps 的 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
這是一個有效的 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
我周圍的一些隨機文件,包括名稱中帶有空格的文件。