好久没写过博客了,年初换了份工作,就一直很忙,超级忙,甚至没有时间看看书或者写写小工具自己玩玩,确实是一件蛮遗憾的事情。
鲁迅说,时间就像海绵里的水,挤挤总有的(鲁迅说:这句话还真是我说的)。现在工作更偏向客户端,每天就是跟着美术爸爸的屁股后边,把特效出现的时间延迟一会,或者把特效向左移动一点,还是蛮无聊的。不如我上份工作。不过不重要,既来之则安之,抽空看看书,学学习,偶尔做个小东西,还是蛮有意思的。
好久没写了,废话太多了,直接上需求。现在服务器的代码分了太多的目录和文件,每次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