我已经编写了一个while循环来逐行读取文件。
while read file
do
FileFound="`find $DataDir -name $file -print 2>/dev/null`"
if [ -n "$FileFound" ]; then
echo $FileFound >> ${runDir}/st_$Region
else
echo $file >> ${APP_HOME}/${Region}_filesnotfound_$date.txt
fi
done < ${Region}_${date}.txt
对于8000条记录,它几乎需要2天才能完成。我如何优化它?
答案 0 :(得分:2)
你的循环占用长时间的原因是因为它运行find
8000次,每个文件一次!这真的很贵。您可以为$ DataDir下的所有文件运行单个find
,将其存储在文件中,然后使用它来查找文件。这会大大加快你的循环速度。