我希望有一个命令或脚本,可以在文件夹及其子文件夹中的所有flac文件上执行flac的测试功能。 (即$ flac -t music_file.flac)
我尝试过使用
find . -name "*.flac" -exec flac -t '{}' \;
并且它有效,但是在测试每个文件之前,flac测试功能还会写入版权/保修输出,这使得很难清楚地看到'ok'的结果。
我也尝试过使用
for file in 'ls *.flac'
do
flac -t $file
done
工作得更整齐(最初只编写保修/版权声明)但不会递归地处理子文件夹。
我可以请求帮助改进吗?
答案 0 :(得分:2)
您可以将--silent
/ -s
传递给flac
,但不会在输出中包含版权信息等。但是请注意,当文件 时,它也不会显示任何内容,只有在不确定时才输出。
答案 1 :(得分:1)
我不确定它是否是最优雅的解决方案,但您可以使用grep的原始命令来排除您不想要的位。因此,如果您想要测试的文件列表以及状态,您可以搜索:
find -name "*.flac" -exec flac -t '{}' \; |& grep "\.flac"
'&安培;'很重要,因为看起来flac输出大多数东西给stderr。
答案 2 :(得分:0)
-R, --recursive list subdirectories recursively
你可以试试这个:
for file in 'ls -R *.flac'
do
flac -t $file
done
答案 3 :(得分:0)
对此我一无所获,但我想我发现了一个命令here,该命令似乎完全符合原始海报的要求,并且对我来说比这里提出的效果更好。
find -type f -iname '*.flac' -print0 | xargs --null flac -t
此命令的一个怪癖是,到目前为止,在我测试过的一个实例中,它以看似随机的顺序处理文件。 (但是这里的命令也是如此。)而且,如果文件太多,我不确定在所有正常情况下是否容易发现错误。该命令的作者建议添加-w和-s开关以抑制除错误以外的所有内容,但这似乎恰恰是原始发布者想要摆脱的。