find命令查詢多個路徑的資料
阿新 • • 發佈:2019-01-05
需求
假設我現在有這樣的目錄結構:
也就是目錄結構是:
|ggservice
|————common
|————constant
|————model
|————v1
其中我要把common包和constant包打包到一起。
引數-o
要是能通過find
命令一次性的,把我們需要的資料查詢出來就好了。
後來在網上找到了-o
引數。也就是or
的縮寫。
命令就可以這樣寫:
find ./ -path '*/ggservice/common/*.class' -o -path '*/ggservice/constant/*.class'
這裡需要說明下,java
檔案我會使用javac
命令編譯成class
classes
資料夾中。
那麼最後的命令我們就可以這麼寫:
# 對公共基礎包進行打包
export baseclass=`find ./ -path '*/ggservice/common/*.class' -o -path '*/ggservice/constant/*.class'`
echo "ggservice-base.jar 打包情況":
jar -cvf ${package}/ggservice-base.jar ${baseclass}
完整的命令
#!/bin/bash
export PATH=~/play-1.2.7:$PATH
#獲得當前目錄
cur=$(pwd)
echo "pwd:"${cur}
rm -rf ggservice-dataservice.jar
output_path=${cur}/classes
package=${cur}/package
echo $output_path
if [ ! -d $output_path ]; then
mkdir $output_path
fi
if [ ! -d $package ]; then
mkdir $package
fi
## 獲取依賴庫和需要編譯的java檔案
export libs=`find ./dataservice/lib -name "*.jar" |xargs|sed "s/ /:/g" `
export javafiles=`find ./dataservice/ -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}
#echo "公共---------"
#echo ${javautils}
# 清除
rm -rf package/*
# 清除編譯後的class檔案
rm -rf ${output_path}/*
# 編譯
javac -d ${cur}/classes -cp ${libs}:$play_lib:$play_lib_common -encoding utf-8 ${javafiles} ${javautils}
# 分批打包
cd /home/jenkins/workspace/ggservice/dataservice/app/ggservice/v1/
dir=$(ls -l |awk '/^d/ {print $NF}')
cd $output_path
for i in $dir
do
echo "ggservice-"${i}".jar打包情況":
jar -cvf ${package}/ggservice-${i}.jar */v1/$i/*
done
# 對公共基礎包進行打包
export baseclass=`find ./ -path '*/ggservice/common/*.class' -o -path '*/ggservice/constant/*.class'`
echo "ggservice-base.jar 打包情況":
jar -cvf ${package}/ggservice-base.jar ${baseclass}
其他類似引數
引數-a:
-a引數就是and
的縮寫,也就是要同時滿足的意思。
引數-not
查詢不滿足條件的檔案
引數-size
查詢滿足檔案大小的檔案