我有几个文件夹包含 FLAC 24/96 和 16/44.1 文件。
我想删除 24 位/96 KHz 文件,但保留其他文件。如何从命令行执行此操作?有没有办法按元数据系统地对文件进行排序,然后将该列表与 一起使用rm
?
答案1
为了完整起见,值得一提的是,在Puddletag,按所需条件排序,然后标记并删除所需的文件。这可能是更安全甚至比定制或编写全新的脚本更快(参见:xkcd 1205 - 值得花时间吗?)。
您可以使用metaflac
(手册页) 用于 flac 文件。
$ metaflac --show-sample-rate --show-bps "somefile.flac"
44100
16
当然,这不是完整的脚本。你可能需要看一下高级 Bash 脚本指南。
以下是一个非常基本的脚本,它会删除所有返回上述命令的文件44100
。16
目录作为参数提供给脚本(例如flac-44100-removal.sh "Music/All music with 44.1kHz/"
)
#!/bin/bash
IFS=$'\n'
for file in $(find "${1}" -name "*.flac");
do
if [ "$(metaflac --show-sample-rate "$file")" = "44100" ]; then
if [ "$(metaflac --show-bps "$file")" = "16" ]; then
rm -i "$file"
fi
fi
done
metaflac 的替代品有:vorbiscomment
用于 ogg、AtomicParsley
用于 mp4/m4a、mid3v2
用于 mp3 或mediainfo
用于所有内容,但它们都有不同的输出,并且 mediainfo 具有过度可定制性。