我有一个文件夹,其中包含成吨的各种类型的杂乱文件,以及较深的子文件夹,并且我想查找每个具有320kpbs(比特率)的音频文件,并对每个文件运行某些操作,而无需将它们全部移到同一位置。就像是:
find /some/folder -type f -regextype posix-extended -regex '.*\.(flac|ape|wa?v|m(p3|4a))' -BITRATE_IS_320kbps -exec ... \;
但是我不知道可以为我执行此类任务的命令行。
我已经想到了一些不太优雅的方法来实现此目的,但我仍然想知道如何find
通过像这样的元数据来(也许类似)?
使用@blm链接的答案中的信息,您可以执行以下操作:
find /some/folder -type f -regextype posix-extended -regex '.*\.(flac|ape|wa?v|m(p3|4a))' -exec bash -c " file '{}' | grep '320 kbps'" \; -exec <do what you want>
第一个命令-exec
将仅查找320 kbps的文件,因为该file
命令会为我们报告该文件。如果grep
s与任何内容都不匹配,则-exec
它将为false,并且第二个-exec
将不被执行。如果grep
确实匹配,-exec
则将执行第二个
为了完整起见,-exec
可以在手册页中找到此功能
-exec command ; Execute command; true if 0 status is returned
编辑:
关于file
在此解决方案中的使用,它似乎不适用于所有人。因此,这是使用以下方法获得比特率的另一种方法mediainfo
:
#!/bin/bash
bitrate=$(mediainfo "$1" | grep -Ei 'overall bit ?rate.*[[:digit:]]+.*$' | grep -Eo [[:digit:]]+)
echo $bitrate
您可以将其保存在具有执行权限的.sh文件中,然后根据mediainfo
总比特率信息为您提供文件的比特率(仅数字),您可以用一种替换方式
-exec bash -c " file '{}' | grep '320 kbps'" \;
和
-exec bash -c "BITRATE_SCRIPT_PATH '{}' | grep '320'" \;
(对于无损音频文件可能表现不佳,无损音频文件的比特率通常为1Mbps +)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句