一千萬個為什麽

搜索

雖然循環需要更長的時間才能完成

我使用下面的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

此while循環讀取文件名並在datadir中進行比較,以查找是否有可用的匹配項。如果可用,它會將整個路徑放到文件中。如果不可用,則將其放入不同的文件中。但是,此腳本需要2天才能完成,以便讀取8000條記錄。有沒有辦法優化它?

最佳答案

如果您使用的是現代Linux桌面,則可能有一個文件索引工具,如 <�代碼> mlocate 已安裝並在後臺索引文件。如果是這樣,你可以使用它:

while read file
do
    locate "$file" >> "${runDir}/st_$Region" || echo "$file" >> "${APP_HOME}/${Region}_filesnotfound_$date.txt"
done<"${Region}_${date}.txt"

如果您要查找的文件經常更新,您可以先使用手動強制更新數據庫。 updatedb 或適用於您的 locate 版本的任何內容。

轉載註明原文: 雖然循環需要更長的時間才能完成