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

来源:互联网 发布:王一霏网络大电影 编辑:程序博客网 时间:2024/06/06 04:15

需求

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

目录结构

也就是目录结构是:
|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/bashexport PATH=~/play-1.2.7:$PATH#获得当前目录cur=$(pwd)echo "pwd:"${cur}rm -rf ggservice-dataservice.jaroutput_path=${cur}/classespackage=${cur}/packageecho $output_pathif [ ! -d $output_path ]; then    mkdir $output_pathfiif [ ! -d $package ]; then    mkdir $packagefi## 获取依赖库和需要编译的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.jarexport 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_pathfor i in $dirdo    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

查询满足文件大小的文件

0 0
原创粉丝点击