Flac

分析文件夾中的flac文件並刪除所有比特率低於950kbps的文件

  • June 12, 2020

我正在尋找一個簡單的 shell 命令來分析文件夾中的所有 flac 文件並刪除所有比特率低於 950kbps 的文件。現在我必須啟動 Clementine,瀏覽到文件夾,對文件進行排序並手動刪除。這就是我使用 Clementine 的全部目的,我認為這太過分了。非常感謝

據我所知,沒有簡單的命令可以執行這樣的操作。但是,瀏覽文件夾中文件的小腳本可以解決問題。

首先,我們需要一個命令行實用程序來獲取文件的比特率。我使用mediainfo( Debian 上的mediainfo包)。其他實用程序也可以很好地完成這項工作。安裝後,以下腳本會列出文件夾中比特率低於 950 kbps 的所有 FLAC 文件。

#!/usr/bin/env sh

for flacfile in *.flac; do
   [ $(mediainfo "$flacfile" | grep 'Bit rate' | grep -oi '[0-9].[0-9]*' | sed 's/\s//g') -lt 950 ] && echo "$flacfile"                                                                                            
done

如果它適合您,只需將命令替換為echo命令rm以繼續刪除文件:

#!/usr/bin/env sh

for flacfile in *.flac; do
   [ $(mediainfo "$flacfile" | grep 'Bit rate' | grep -oi '[0-9].[0-9]*' | sed 's/\s//g') -lt 950 ] && rm "$flacfile"                                                                                            
done

解釋

  • for循環瀏覽目錄中的所有文件.flac
  • mediainfo顯示有​​關 FLAC 文件的所有資訊並將其提供給第一個grep命令;
  • 第一個grep選擇比特率線並將其提供給第二個grep
  • 第二個grep在這一行中只選擇數字。.in[0-9].[0-9]*處理空格千位分隔符(例如 in )1␣050
  • sed如果需要,刪除千位分隔符;
  • 最後[ ... -lt 950 ]檢查比特率是否小於 950 kbps,如果是,則rm命令刪除文件。

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