我正在寻找一个简单的 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
如果适合您,只需将命令替换为继续文件删除的命令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处理空格千位分隔符(例如 in).
;[0-9].[0-9]*
1␣050
sed
如果需要,删除空格千位分隔符;- 最后
[ ... -lt 950 ]
检查比特率是否小于 950 kbps,如果是,则rm
命令删除该文件。