我想知道是否有人知道如何重命名多个文件,所有这些文件最初都以相同的结构命名,并根据具体规则添加从 mysql 数据库中提取的一些数据。
例如,我有 500 个以此变量命名的文件:
身份证件姓名地址电话.wav => 1234567 PAULSIMON WESTDR122 9942213456.wav
现在我需要重命名文件,从每个文件的数据库中获取一些数据,并且 将查询中的数据附加到文件名中。
例如,添加查询结果中某些条件匹配的数据, 构建查询的数据取自原始文件名,如 ID 或 NAME。
换句话说,我想构建一个查询,从文件中获取 ID 和 NAME 1234567 PAULSIMON WESTDR123 9942213456.wav 作为 WHERE 语句取另一个值 作为 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
关于mysql - 使用mysql数据有条件批处理文件重命名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3058578/