2011-06-16 79 views
0

我想在bash構建腳本中做一個簡單的檢查,以檢查構建的文件XML是否比目錄中的組件xml文件更新。Bash腳本文件修改依賴項檢查

所以基本上我有一個帶有10個XML文件的src /目錄和一個從這些文件構建的final.xml。

什麼是簡單的方法來檢查final.xml的修改時間,以確保它比src /中的文件更早。

類似的東西到Ant的

<uptodate property="xml.build.notRequired" targetfile="${final.xml}"> 
     <srcfiles dir="${src.dir}" includes="**/*.xml" /> 
    </uptodate> 

或者生成文件的基本功能(但我寧願做它在腳本不是增加撥打/ ANT爲依賴)。

回答

5
find src -type f | while read filename; do 
    if [ "$filename" -nt "final.xml" ]; then 
     echo "Oh noes, final.xml is out of date..." 
    fi 
done 
+0

這裏的關鍵是測試運算符'-nt'(對於比新的);還有類似的'-ot'(年齡大於)測試。這些比較兩邊的兩個文件,確定RHS是否比LHS的新(比)更新。 – 2011-06-16 23:41:37

0
find src -newer src/final.xml -print 

將打印什麼是 「新」 的final.xml

n=$(find src -newer src/final.xml | grep -c '.') && echo Here is $n newer files 

會做echo只有在這裏,所有新建的文件中的所有文件,否則將回聲不被執行