有条件的批量文件重命名与MySQL数据
问题描述:
我想知道是否有人知道我怎么能重命名多个文件,他们全部最初命名为相同的结构,并添加一些数据从MySQL数据库提取根据具体规则。有条件的批量文件重命名与MySQL数据
例如,我有这个名为500页的文件瓦尔:
ID名称地址PHONE.wav => 1234567保罗·西蒙WESTDR122 9942213456.wav
现在我需要重命名文件从数据库中采取的一些数据每个文件和 将附加到文件名的查询中的数据附加。
例如,添加查询产生的数据在某些条件匹配的情况下, 并将构建查询的数据从原始文件名作为ID或名称进行提取。
我换句话说,可以说,我想建立一个查询到ID &的名字从文件 1234567保罗·西蒙WESTDR123 9942213456.wav作为WHERE语句采取作为生日另一个值 并且将其添加到新的文件名,所以最后的结果应该是:
ID姓名地址电话BIRTHDATE.wav
我会明白任何帮助。
我需要在LINUX服务器上完成此操作。
答
#!/bin/sh
# adjust this to your actual database name
# also some tweaks will be needed if you use mysql login/password authentication
DB_NAME=my_db_name
IFS=$'\x0d\x0a'
FNAMES=`find . -name "*.wav" -printf '%P\n'`
for FNAME in $FNAMES; do
echo "[.] file $FNAME"
ID=`echo $FNAME | awk '{print $1}'`
NAME=`echo $FNAME | awk '{print $2}'`
echo "[.] id=$ID name=$NAME"
# adjust query at next line to your needs
Q=`mysql $DB_NAME --skip-column-names -Be "SELECT birthdate FROM users WHERE id='$ID' AND name='$NAME' LIMIT 1"`
echo "[.] mysql returned $Q"
if [ "$Q" != "" ]; then
echo renaming "$FNAME" TO "${FNAME%.wav} $Q.wav"
# uncomment next line to do actual rename
#mv "$FNAME" "${FNAME%.wav} $Q.wav"
fi
echo
done
太棒了,你是男人!我今天会尝试。非常感谢! – 2010-06-17 13:16:53