【发布时间】:2013-09-24 23:21:57
【问题描述】:
我想为大量图像创建拇指。 问题是,对于大型列表,读取行似乎非常慢。我能想到的一种解决方案是创建最多包含 500 行的文件,然后一一读取。但是这个问题有什么聪明的解决方案吗?
while read line; do
if [ -e "$line" ] && [ ! -z "$line" ]; then
...
fi
}
done <<< "$imagesList"
【问题讨论】:
-
也许使用比 bash 更适合这些任务的东西?
-
另外,你从哪里得到
$imagesList,你为什么用<<<传递它?也许您可以将创建该列表的任何内容通过管道传输到xargs。 -
我高度怀疑这里的慢是阅读这些行。您正在为每个文件创建缩略图? 那是缓慢的部分。
-
我的直觉是缓慢的部分是从
find命令构建长字符串,然后再次将其拆分为行。请改用find ... | (while read line; do; ...; done)。 -
无意冒犯,但这个评论线程充满了货物崇拜,并且从问题中没有足够的可观察性来真正确认或否认任何方法。很可能
find … -exec something {} +是比涉及while loop的任何事情 更合适的方法,但如果问题中没有更多信息,就不可能组成该答案。
标签: linux bash loops while-loop