shell写一个搜索脚本

22 篇文章 0 订阅

       好久没写过博客了,年初换了份工作,就一直很忙,超级忙,甚至没有时间看看书或者写写小工具自己玩玩,确实是一件蛮遗憾的事情。

       鲁迅说,时间就像海绵里的水,挤挤总有的(鲁迅说:这句话还真是我说的)。现在工作更偏向客户端,每天就是跟着美术爸爸的屁股后边,把特效出现的时间延迟一会,或者把特效向左移动一点,还是蛮无聊的。不如我上份工作。不过不重要,既来之则安之,抽空看看书,学学习,偶尔做个小东西,还是蛮有意思的。

        好久没写了,废话太多了,直接上需求。现在服务器的代码分了太多的目录和文件,每次grep的时候非常不方便,因为我不想grep一大堆不需要的目录,每次都需要很久的时间,干脆集成一下grep命令,写个脚本去搜索。其实思路超级简单:默认搜索目录,但是可以根据参数来决定要不要其他搜索目录,主要就是处理传入参数的问题,最终的搜索还是封装了grep命令而已。

        主要思路:1、有一个默认的搜索目录,大多数时候使用这个。2、其他可能用到的目录,需要保留,但是不需要的时候不搜索。3、需要参数,例如全词搜索或者区分大小写。

        翠花,上代码:

#!/bin/bash

######################################
# 查找代码
# ./find_script.sh 'text' args
# args:参数集,可省略采用默认搜索及默认目录。
#   args目前支持(-i, -w, -skill -event)
#       -i: 忽略大小写
#       -w: 全词匹配
#       -skill: 同时搜索技能目录 
#       -event: 同时搜索事件目录
######################################

path=('/home/script/entity' \
'/home/script/battle' \
'/home/script/utils')
#目录全部加在一起搜索太慢了  分开吧
skill_path=('/home/logic/unit' \
'/home/view/unit')
event_path=('/home/logic/events' \
'/home/logic/logic/events')

#处理参数
ignore=false
full_word=false
find_skill=false
find_event=false
for arg in $*
do
    if [[ $arg == '-i' ]]
    then
        ignore=true
    elif [[ $arg == '-w' ]]
    then
        full_word=true
    elif [[ $arg == '-skill' ]]
    then
        find_skill=true
    elif [[ $arg == '-event' ]]
    then
        find_event=true
    fi  
done

#########################################
#这一段在查找前搞定目录  需要添加目录都加在这
if [[ $find_skill == true ]]
then
    path=(${path[@]} ${skill_path[@]})
fi
if [[ $find_event == true ]]
then
    path=(${path[@]} ${event_path[@]})
fi
#########################################
#这一段在查找前搞定参数  以后其他的都可以加在这
args=''
if [[ $ignore == true ]]
then
    args="$args -i "
fi
if [[ $full_word == true ]]
then
    args="$args -w "
fi
########################################

# 正式查找
for path_one in ${path[@]}
do
    grep -r $1 $path_one --color $args
done

     

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值