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

发布于 2024-09-05 23:27:50 字数 538 浏览 1 评论 0原文

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

例如,我有 500 个以此变量命名的文件:

ID NAME ADDRESS PHONE.wav => 1234567 PAULSIMON WESTDR122 9942213456.wav

现在我需要重命名文件,从每个文件的数据库中获取一些数据,并且 将查询中的数据附加到文件名中。

例如,添加查询结果中某些条件匹配的数据, 构建查询的数据取自原始文件名,如 ID 或 NAME。

换句话说,假设我想构建一个带有 ID 和 ID 的查询。文件中的名称 1234567 PAULSIMON WESTDR123 9942213456.wav 作为 WHERE 语句取另一个值 作为 BirthDATE 并将其添加到新文件名中,因此最终结果应该是:

ID NAME ADDRESS PHONE BIRTHDATE.wav

我将不胜感激对此的任何帮助。

我需要在 LINUX 服务器上完成此操作。

I wonder if anyone knows how could I rename multiple files, all of them originally named with same structure, and add some data extracted from a mysql DB according to specifics rules.

For example I have 500 files named with this vars:

ID NAME ADDRESS PHONE.wav => 1234567 PAULSIMON WESTDR122 9942213456.wav

Now I need to rename files taking some data from the databases for each file, and
append the data from a query appended to the filename.

For example add the data resulting from a query Where some conditions match,
and the data to build the query is taked from original file name, as ID or NAME.

i other words, lets say that I want to build a query taking ID & NAME from file
1234567 PAULSIMON WESTDR123 9942213456.wav as WHERE statements to take another value
as BirthDATE and add this to new filename, so final result should be:

ID NAME ADDRESS PHONE BIRTHDATE.wav

I will appreciate any help on this.

I need this to be done on a LINUX server.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

温柔嚣张 2024-09-12 23:27:50
#!/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
#!/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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文