Shell 递归遍历文件夹

写这段程序纯属意外,第一次弄Shell,网上搜了一堆才写出来一段准备把maven的repo下的非Sources的jar文件加入到CLASSPATH中。当然最后失败了,因为这个文件夹太大了,很长时间遍历不完,但还好留下了这段遍历文件夹并根据文件后缀名判断文件类型的代码。

Java代码

CLASSPATH=.

##把文件路径加入到CLASSPATH中

functionappend_path(){

file_suffix=`echo$1|awk'{printsubstr($0,length($0)-2)}'`

source_suffix=`echo$1|awk'{printsubstr($0,length($0)-10)}'`

if["jar"=$file_suffix];then

if["sources.jar"!=$source_suffix];then

CLASSPATH=$CLASSPATH:$1

fi

fi

}

##递归遍历文件夹

functioniterate_dir(){

forfilein$1/*

do

if[-f$file];then

append_path$file

else

iterate_dir$file

fi

done

exportCLASSPATH

}

##这个是方法调用的入口

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

exportCLASSPATH

echo$CLASSPATH##查看是否加入到了CLASSPATH中

相关推荐