2011-06-16 3 views
0

ビルドされたファイルのXMLがディレクトリ内のコンポーネントのxmlファイルよりも新しいかどうかを確認するために、bashビルドスクリプトで単純なチェックを試みています。Bashスクリプトのファイルの依存関係のチェック

私は基本的に10個のXMLファイルとそのファイルから構築されたfinal.xmlを持つsrc /ディレクトリを持っています。

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'(古い)テストもあります。これらは、どちらかの側の2つのファイルを比較して、RHSがLHSより新しい(古い)かどうかを判断します。 –

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を尽くすよう "新しい" であるか、すべてのファイルを印刷します実行されません

関連する問題