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
因为find .
输出以 为前缀.
)。然后它-nt
用于测试 src 树中的 java 文件是否比构建树中相应的类文件更新;如果它较新,则输出。[javac 然后可以使用它来仅编译所需的 src 文件,而不是使用ant
or make
]
问题是它太慢了,大约需要 275ms。如何让它更快?
或者有没有更快的方法在 bash 中做到这一点?我看不到如何使用find
, diff
, rsync
nor make
(它似乎不会自动遍历树,并且需要明确列出的源文件)。