shell初学
当前业务里面有两种形式的音频文件存储格式,一种是在录音根目录下创建游戏英文名文件夹,录音名也以英文为基准;另一种是一些小产品综合热线的录音被放在/电话号码文件夹下面,文件夹下的录音完全按照电话号码来命名。现在为了干掉一部分兼容性代码,把后者全部变成前者的形式,所以需要写一个shell脚本来实现。总结一下需要以下几步:
- 遍历
/电话号码文件夹下的文件,获得文件名,利用正则表达式提取需要处理的文件 - 查询数据库,获得号码所对应的英文名
- 字符串切割与拼接,得到新的文件名
- 检查是否存在新的文件夹,不存在则创建
- 复制文件到新目录下,并重命名
代码放在下面:
#!/bin/bash
#作用的文件夹目录
dir=""
newdir=""
HOSTNAME=""
PORT=""
USERNAME=""
PASSWORD=""
DBNAME="" #数据库名称
TABLENAME="" #数据库中表的名称
#遍历文件夹下面的文件
for file in $dir/*; do
#获取文件名
file_name=`basename ${file}`
#echo ${file_name}
#将文件名匹配正则
if echo ${file_name} | grep -q "^95163517-[0-9]{3}.*.wav$"
then
#号码
number=${file_name:0:12}
echo ${number}
#查询数据库得到ename
QUERY=`mysql -h$HOSTNAME -u$USERNAME -p$PASSWORD << EOF
use ${DBNAME};
select ename from ${TABLENAME} where phone='${number}';
exit
EOF`
ename=${QUERY:6:${#QUERY}}
#echo ${ename}
#得到新的文件名
file_back=${file_name:12:${#file_name}}
new_filename=${ename}${file_back}
echo $new_filename
#检查是否存在文件夹,不存在则创建
if [ ! -d "${newdir}/${ename}" ]
then
mkdir ${newdir}"/"${ename}
fi
#复制文件并重命名
echo $file
`cp ${file} ${newdir}"/"${ename}"/"${new_filename}`
fi
done
第一次写shell,做一个简单的记录。