有条件的批量文件重命名与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 
+0

太棒了,你是男人!我今天会尝试。非常感谢! – 2010-06-17 13:16:53