我想知道是否有人知道如何重命名多个文件,所有文件最初都以相同的结构命名,并根据具体规则添加从mysql DB中提取的一些数据。
例如,我有500个以此vars命名的文件:
ID NAME ADDRESS PHONE.wav => 1234567 PAULSIMON WESTDR122 9942213456.wav
现在我需要重命名文件,从每个文件的数据库中获取一些数据,以及 追加附加到文件名的查询中的数据。
例如,添加查询产生的数据,其中某些条件匹配, 并且构建查询的数据来自原始文件名,如ID或NAME。
换句话说,我可以说我想建立一个ID& NAME来自档案 1234567 PAULSIMON WESTDR123 9942213456.wav as WHERE语句取另一个值 作为BirthDATE并将其添加到新文件名,因此最终结果应为:
ID NAME ADDRESS PHONE BIRTHDATE.wav
我将不胜感激。
我需要在LINUX服务器上完成此操作。
答案 0 :(得分:0)
#!/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