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中  

你可能感兴趣的:(文件夹)