我正在清理我的音乐库,但一直无法删除多年来一直在那里收集的数千张比特率低于 320kbps 的专辑。手动检查单个文件的比特率并删除整个文件夹真的很繁琐。也许有人能想出一些办法来帮助我清理?我希望之后只保留 320kbps 的 MP3 和 flacs。提前谢谢!
答案1
这是一个 shell 方法。它将删除所有不包含.mp3
比特率 >= 320 kbps 的文件的目录:
find /path/to/Music -type d -print0 |
while IFS= read -r -d '' dir; do
mp3=$(find "$dir" -type f -iname '*.mp3' | head -n 1);
[ -e "$mp3" ] && [[ $(mp3info -x "$mp3" | grep -oP '\d+(?=\s*kbps)') -lt 320 ]] &&
rm -rf "$(dirname "$mp3")";
done
笔记
这将删除包含以下内容的所有目录最后一个mp3 文件,其比特率小于 320。如果同一目录中存在另一个具有正确比特率的文件,则该文件也将被删除。此方法假设目录中的所有文件都具有相同的比特率。
这将丢失可变比特率的文件。
它应该适用于任何类型的文件名,包括带有空格、换行符甚至反斜杠的文件名。
您可能需要安装
mp3info
:sudo apt-get install mp3info
首先在测试目录上运行它。
解释
find /path/to/Music -type d -print0
:查找下面的所有目录/path/to/Music
,并以空字符串分隔打印它们。这是为了处理奇怪的文件名。while IFS= read -r -d '' dir; do
:遍历每个结果find
,并将它们保存在$dir
变量中。mp3=$(find "$dir" -type f -iname '*.mp3' | head -n 1);
:将该目录下第一个mp3文件命名为$mp3
。[ -e "$mp3" ]
:如果此文件存在。这是跳过没有 mp3 文件的目录所必需的。[[ $(mp3info -x "$mp3" | grep -oP '\d+(?=\s*kbps)') -lt 320 ]]
:这将检查 的比特率$mp3
。它运行mp3info
,查找比特率并检查它是否小于320
。rm -rf "$(dirname "$mp3")";
:删除包含 mp3 文件的目录。仅当其比特率低于所需时才会运行此操作。
答案2
从@DavidFoerster 的评论我会使用 Banshee。
media
通过前往->import media
并选择文件夹,从您想要的文件夹(甚至整个分区)导入所有媒体文件。
导入所有媒体后,右键单击列栏(如下面的屏幕截图所示)并选择Bitrate
。然后单击列名称以按该列排序。
然后,您可以选择所需的比特率(在本例中为 320),向下滚动,按下Shift并单击最后一首歌曲。然后右键单击所选歌曲并选择Delete from Drive
。