使用场景
在清理数据库中,发现好多以_BAK
结尾的备表,但据开发讲好多_BAK
在代码中被使用,所以我需要通过搜索代码中是否有表名,判断表是否被使用
脚本思路:
- 整理出要检查的表
- 用
,
分割表转化为数组,循环表名数组 - 使用grep查找表名在文件夹中出现的次数
- 如果次数为0,则输出表名(此处拼装了drop语句)
- 循环结束,要执行的drop语句也生成了
Shell脚本
batch_lookup_keyword_dir.sh
#!/bin/bash
dir_path="/root/test"
keywords="TABLE_A_BAK,TABLE_B_BAK,TABLE_C_BAK,TABLE_D_BAK"
array=(${keywords//,/ })
for var in ${array[@]}
do
count=`grep -r $var $dir_path | wc -l`
if [ $count == "0" ];then
echo "drop table "$var";"
fi
done