【发布时间】:2016-11-26 20:18:41
【问题描述】:
我有以下情况:
我想检查$1目录中的文件直到其中一个符合我的条件。
详细说明:我想测试该目录是否包含音频文件。一旦找到第一个音频文件,process_audio_dir 就会发生;如果目录中没有音频文件,则会发生process_noaudio。
到目前为止我的解决方案:
if [[ -z $(file -b "$1"/* | grep -i audio) ]]; then
echo "there are no audio files"; process_noaudio
else
echo "at least one audio file"; process_audio_dir
fi
file -b 告诉我文件是什么文件类型。
我用set -x 查看它的猜测是,这将在所有文件上运行file -b,将结果放在一行中并用greps 匹配该行。 (也许这是一个错误的假设)。
我宁愿有一个循环,直到找到第一个音频文件(一个足以匹配条件)并在那里停止/中断,或者,如果没有音频文件,继续到process_noaudio。
我觉得 while/until 可以实现这一点,但我想不通。
检查目录中每个文件直到第一次匹配的方法是什么(您的首选|最佳实践|最优雅|成本最低|最快)?
【问题讨论】:
-
以为我做到了,但我删除了(额外的)代码标签。你猜这是一条自动评论?
-
谢谢。代码更易读。
-
哪个平台?如果我们只需要支持 GNU
file,这可以通过一种既不牺牲效率也不牺牲正确性的方式来完成。