mysql - 使用mysql数据有条件批处理文件重命名

标签 mysql linux batch-file scripting rename

我想知道是否有人知道如何重命名多个文件,所有这些文件最初都以相同的结构命名,并根据具体规则添加从 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/

相关文章:

windows - 如何在 Windows 命令提示符下对变量进行字符串替换?

PHP MySQL 输入 HTML 标签

mysql - 限制从内部联接返回的行数

MYSQL 查询与选择具有 LIMIT 条件不同

linux - gnuplot 自动排序时间

batch-file - 为什么这个批处理文件 "remember"用户输入?

Mysql连接复杂子查询

c# - 在 Mono 中检测符号链接(symbolic link)和管道

linux - 无法在 centos 6 上显示来自 vsftpd 服务器的文件

java - 从运行时环境中运行批处理文件