Условное переименование файла с данными MySQL - PullRequest
0 голосов
/ 17 июня 2010

Интересно, знает ли кто-нибудь, как я могу переименовать несколько файлов, все они изначально названы с одинаковой структурой, и добавить некоторые данные, извлеченные из базы данных mysql в соответствии со специальными правилами.

Например, у меня есть 500 файлов с этим именем:

ИМЯ АДРЕС PHONE.wav => 1234567 PAULSIMON WESTDR122 9942213456.wav

Теперь мне нужно переименовать файлы, беря некоторые данные из баз данных для каждого файла, и добавить данные из запроса, добавленного к имени файла.

Например, добавить данные, полученные в результате запроса, если некоторые условия совпадают, а данные для построения запроса берутся из исходного имени файла, как ID или ИМЯ.

Другими словами, скажем, я хочу создать запрос, используя ID & NAME из файла. 1234567 PAULSIMON WESTDR123 9942213456.wav как операторы WHERE для принятия другого значения как BirthDATE и добавьте это к новому имени файла, поэтому конечный результат должен быть:

ИМЯ АДРЕСА ТЕЛЕФОН РОЖДЕНИЯ.wav

Буду признателен за любую помощь в этом.

Мне нужно, чтобы это было сделано на сервере LINUX.

1 Ответ

0 голосов
/ 17 июня 2010
#!/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
...