分析文件夹中的flac文件并删除所有码率低于950kbps的文件

分析文件夹中的flac文件并删除所有码率低于950kbps的文件

我正在寻找一个简单的 shell 命令来分析文件夹中的所有 flac 文件并删除比特率低于 950kbps 的所有文件。现在我必须启动 Clementine,浏览到文件夹,对文件进行排序并手动删除。这就是我使用克莱门汀的全部目的,我认为这有点过分了。多谢

答案1

据我所知,没有简单的命令可以执行此类操作。然而,一个浏览文件夹中文件的小脚本就可以做到这一点。

首先,我们需要一个命令行实用程序来获取文件的比特率。我用mediainfo媒体信息Debian 上的软件包)。其他实用程序也可以很好地完成这项工作。安装后,以下脚本会列出文件夹中比特率低于 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

如果适合您,只需将命令替换为继续文件删除的命令echorm

#!/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处理空格千位分隔符(例如 in).[0-9].[0-9]*1␣050
  • sed如果需要,删除空格千位分隔符;
  • 最后[ ... -lt 950 ]检查比特率是否小于 950 kbps,如果是,则rm命令删除该文件。

相关内容