递归测试文件夹中的所有flac文件

时间:2013-11-11 03:47:02

标签: recursion find flac

我希望有一个命令或脚本,可以在文件夹及其子文件夹中的所有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

工作得更整齐(最初只编写保修/版权声明)但不会递归地处理子文件夹。

我可以请求帮助改进吗?

4 个答案:

答案 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开关以抑制除错误以外的所有内容,但这似乎恰恰是原始发布者想要摆脱的。