2010-06-17 8 views
0

Je me demande si quelqu'un sait comment renommer plusieurs fichiers, tous nommés à l'origine avec la même structure, et ajouter des données extraites d'une base de données MySQL selon des règles spécifiques.Renommage de fichiers par lots conditionnel avec des données mysql

Par exemple, j'ai 500 fichiers nommés avec ce vars:

ID NOM ADRESSE PHONE.wav => 1234567 WESTDR122 9942213456.wav Paul Simon

Maintenant, je dois renommer les fichiers prenant des données à partir des bases de données chaque fichier, et ajouter les données d'une requête ajoutée au nom de fichier.

Par exemple, ajoutez les données résultant d'une requête Lorsque certaines conditions correspondent, et les données pour générer la requête sont extraites du nom de fichier d'origine, en tant qu'ID ou NOM.

i d'autres termes, disons que je veux construire une requête qui prend ID & NOM du fichier 1234567 WESTDR123 9942213456.wav comme Paul Simon instructions WHERE de prendre une autre valeur comme date de naissance et l'ajouter à nouveau nom de fichier, donc résultat final devrait être:

ID NOM ADRESSE TÉLÉPHONE BIRTHDATE.wav

Je vous saurais gré de toute aide à ce sujet.

J'ai besoin que cela soit fait sur un serveur LINUX.

Répondre

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 
+0

Génial, vous êtes l'homme !! Je vais essayer aujourd'hui. Merci beaucoup! –