Shell 递归遍历文件夹

写这段程序纯属意外,第一次弄Shell,网上搜了一堆才写出来一段准备把maven的repo下的非Sources的jar文件加入到CLASSPATH中。当然最后失败了,因为这个文件夹太大了,很长时间遍历不完,但还好留下了这段遍历文件夹并根据文件后缀名判断文件类型的代码。
Java代码 
CLASSPATH=. 
## 把文件路径加入到CLASSPATH中 
function append_path(){ 
        file_suffix=`echo $1 | awk '{print substr($0,length($0)-2)}'` 
        source_suffix=`echo $1 | awk '{print substr($0, length($0)-10)}'`  
        if [ "jar" = $file_suffix ]; then 
                if [ "sources.jar" != $source_suffix ]; then   
                        CLASSPATH=$CLASSPATH:$1 
                fi   
        fi   

 
##递归遍历文件夹 
function iterate_dir(){ 
        for file in $1/* 
        do   
                if [ -f $file ]; then 
                        append_path $file 
                else 
                        iterate_dir $file 
                fi   
        done 
 
        export CLASSPATH 

 
## 这个是方法调用的入口 
iterate_dir ~/repo 
附:
其实即使上面的程序耗时很短,把相关的jar文件路径加入到了CLASSPATH,其实也会有问题的,大家知道maven库会维护同一个三方包的多个版本,如果同时加入到CLASSPATH中,必然会导致冲突。
另外,在一个Terminal中单独引入一个三方包的方法:
Java代码 
CLASSPATH=$CLASSPATH:/home/enjiex/repo/jdbc/mysql/mysql-connector/5.1.5/mysql-connector-5.1.5.jar 
export CLASSPATH 
echo $CLASSPATH   ##查看是否加入到了CLASSPATH中 

你可能感兴趣的:(java)