【问题标题】:Conditional Batch file renaming with mysql data使用mysql数据重命名条件批处理文件
【发布时间】:2011-03-04 18:25:56
【问题描述】:

我想知道是否有人知道我如何重命名多个文件,所有这些文件最初都以相同的结构命名,并根据具体规则添加一些从 mysql 数据库中提取的数据。

例如,我有 500 个用这个变量命名的文件:

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 服务器上完成此操作。

【问题讨论】:

    标签: mysql linux batch-file scripting rename


    【解决方案1】:
    #!/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
    

    【讨论】:

    • 太棒了,你就是那个男人!我今天会试试。非常感谢!
    猜你喜欢
    • 2014-02-26
    • 2019-05-25
    • 2013-06-25
    • 1970-01-01
    • 2019-06-08
    • 2014-02-22
    • 2012-12-10
    • 2010-09-20
    相关资源
    最近更新 更多