2010-06-17 3 views
0

원래 이름이 같은 구조로 명명 된 여러 파일의 이름을 바꾸고 특정 규칙에 따라 mysql DB에서 추출한 일부 데이터를 추가하는 방법을 알고 있는지 궁금합니다.조건부 일괄 파일 mysql 데이터로 이름 바꾸기

예를 들어

나는이 함께라는 이름의 500 개 파일이이 바르 :

ID 성명 주소 PHONE.wav는 => 1234567 폴 사이먼 WESTDR122이 9942213456.wav

가 지금은 대한 데이터베이스에서 일부 데이터를 가지고 파일의 이름을 변경해야 각 파일 및 은 파일 이름에 추가 된 쿼리의 데이터를 추가합니다.

예를 들어 쿼리 결과 데이터를 추가합니다. 일부 조건이 일치하는 경우 이고 쿼리를 작성하는 데이터는 원본 파일 이름 (ID 또는 NAME)에서 가져옵니다.

내가 즉, 내가 문을 생일로 다른 값 을하고 새 파일 이름이를 추가하는 WHERE로 파일에서 ID를 1234567 폴 사이먼 WESTDR123의 9942213456.wav을 & NAME을 복용하는 쿼리를 작성하려는 말할 수 있으므로 최종 결과 해야한다 : 나는이에 어떤 도움을 주셔서 감사합니다

ID 성명 주소 전화 BIRTHDATE.wav.

Linux 서버에서 수행해야합니다.

답변

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

굉장한, 너! 나는 오늘 그것을 시험 할 것이다. 정말 고맙습니다! –