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

Recursion 递归测试文件夹中的所有flac文件,recursion,find,flac,Recursion,Find,Flac,我希望有一个命令或脚本,可以对文件夹及其子文件夹中的所有flac文件执行flac的测试功能。(即$flac-t music_file.flac) 我试过使用 find . -name "*.flac" -exec flac -t '{}' \; for file in 'ls *.flac' do flac -t $file done 尽管如此,flac测试功能在测试每个文件之前也会写入版权/保修输出,因此很难清楚地看到“ok”的结果 我也试过使用 find . -name "*.fla

我希望有一个命令或脚本,可以对文件夹及其子文件夹中的所有flac文件执行flac的测试功能。(即$flac-t music_file.flac)

我试过使用

find . -name "*.flac" -exec flac -t '{}' \;
for file in 'ls *.flac'
do
  flac -t $file
done
尽管如此,flac测试功能在测试每个文件之前也会写入版权/保修输出,因此很难清楚地看到“ok”的结果

我也试过使用

find . -name "*.flac" -exec flac -t '{}' \;
for file in 'ls *.flac'
do
  flac -t $file
done
它工作得更整洁(最初只写一次保修/版权声明),但不会递归地作用于子文件夹

我可以请求一些帮助来改进这一点吗?

您可以将
--silent
/
-s
传递给
flac
,输出中将不包括版权信息等。但是,请注意,当文件正常时,它也不会显示任何内容,只有在文件不正常时才输出

您可以尝试以下方法:

for file in 'ls -R *.flac'
do
    flac -t $file
done

我不确定这是否是一个最优雅的解决方案,但您可以使用grep的原始命令来排除不需要的位。因此,如果您想要测试的文件列表以及状态,您可以搜索:

find -name "*.flac" -exec flac -t '{}' \; |& grep "\.flac"

“&”很重要,因为flac似乎向stderr输出了大部分内容。

我对此没有任何功劳,但我认为我找到了一个命令,它似乎完全符合原始海报的要求,并且比这里建议的命令更适合我

find -type f -iname '*.flac' -print0 | xargs --null flac -t

这个命令的一个诡辩之处是,在我迄今为止测试的一个实例中,它似乎以随机顺序处理文件。(但这里的命令也是如此。)此外,如果有很多文件,我不确定是否可以很容易地在所有okays中发现错误。该命令的作者建议添加-w和-s开关以抑制除错误以外的所有内容,但这似乎正是原始海报想要摆脱的问题。

flac:unrecogned option`--recursive'是-RSome的输出。关于这一点,我了解到“ls”命令实际上是不必要的,在本例中,它不充当bash命令“ls”。for循环已经列出了目录中的所有文件,循环中的一个“echo”调试命令显示$file在第一次迭代中等于“ls”。谢谢,这是我尝试过的一个选项,但我希望找到一个介于静默和默认之间的解决方案。这将很好地完成这项工作,现在为什么我没有想到呢!