Linux find 排除某個目錄
阿新 • • 發佈:2019-02-07
find . -path ./ggpay/model -prune -o -name '*.class' -not -type d -print
我這個是排除路徑中含有/ggpay/model的檔案或目錄
其中-prune,類似於if
判斷,如果-prune之前的語句為真,
比如找到ggpay/model路徑的檔案或目錄,就不再執行後面 -o -name語句。
如果沒有找到則執行後面的語句。這樣就做到了排除效果。
以下是我寫jenkins構建時,把jar包的指令碼
#!/bin/bash
export PATH=~/play-1.2.7:$PATH
#獲得當前目錄
cur=$(pwd)
echo "pwd:"${cur}
rm -rf ggservice-dataservice.jar
output_path=${cur}/classes
model_output_path=${cur}/model_classes
ggpay=${cur}/ggpay
echo $output_path
if [ ! -d $output_path ]; then
mkdir $output_path
fi
if [ ! -d $model_output_path ]; then
mkdir $model_output_path
fi
## model要單獨打jar包
echo "pwd:"${cur}
## 獲取依賴庫和需要編譯的java檔案
export libs=`find ./pay/lib -name "*.jar" |xargs|sed "s/ /:/g"`
export javafiles=`find ./pay/app/ -name "*.java" |xargs|sed "s/ / /g"`
export javautils=`find ./utils/app/ -name "*.java" |xargs|sed "s/ / /g"`
export play_lib=/opt/play-1.2.7/framework/play-1.2.7.jar
export play_lib_common=`find /opt/play-1.2 .7/framework/lib/ -name "*.jar" |xargs|sed "s/ /:/g"`
echo ${javafiles}
##編譯 除model資料夾
javac -d ${cur}/classes -cp ${libs}:$play_lib:$play_lib_common -encoding utf-8 ${javafiles} ${javautils}
##打包
cd $output_path
jar -cvf ${cur}/ggpay.jar `find . -path ./ggpay/model -prune -o -name '*.class' -not -type d -print`
jar -cvf ${cur}/ggpay-model.jar ggpay/model/*