for n in `cd src; find . -name "*.java"; cd -`;
do a=`echo $n | cut -d '.' -f2`;
if [[ src/$a.java -nt build/$a.class ]];
then echo src/$a.java;
fi;
done
srcツリー内のすべてのJavaファイルが一覧表示されます。次に、それぞれについて、接尾辞「.java」を削除します(出力の前に)が付いてcut -d '.' -f2
いるためです。次に、srcツリーのjavaファイルがビルドツリーの対応するクラスファイルよりも新しいかどうかをテストするために使用します。新しい場合は出力されます。[javacは、またはを使用する代わりに、これを使用して必要なsrcファイルのみをコンパイルできます]find .
.
-nt
ant
make
問題は、それが遅すぎて、約275msかかることです。それを速くする方法は?
または、bashでこれを行うより速い方法はありますか?、、、またはを使用してそれfind
を行う方法がわかりません(これはツリーを自動的にトラバースしないようであり、明示的にリストされたソースファイルが必要です)。diff
rsync
make