find命令查找多个路径的数据

需求

假设我现在有这样的目录结构:

find命令查找多个路径的数据_第1张图片

也就是目录结构是:
|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

查询满足文件大小的文件

你可能感兴趣的:(ubuntu,centos,linux)