Mysql 쿼리 출력에서 ​​파일 시스템의 파일을 검색하고 파일 이름을 바꿉니다.

Mysql 쿼리 출력에서 ​​파일 시스템의 파일을 검색하고 파일 이름을 바꿉니다.

두 열에 1000개의 행을 출력하는 bash에서 SQL 쿼리를 호출해야 합니다.

  1. 파일 경로(예: /opt/files/dest/2.bin)
  2. 파일 이름(예: fax attachment.pdf... invoice.docx예, 공백이 있습니다).

서버 파일 시스템의 파일 이름은 서로 다른 이름 지정 형식을 갖습니다(예: 1.bin, 22.bin). 누락된 파일 중 일부와 동일한 고유 파일이 1000개 미만입니다.

다음은 SQL 쿼리의 스냅샷입니다.

Select * from datafileinfo limit 4; 

산출:

FILEID,NAME 
/ran/file/MM/2012/04/3.bin,new_fax.pdf
/ran/file/MM/2013/06/12.bin,new_report.docx
/ran/file/MISC/2012/08/212.bin,daily_transact.jrxml
/ran/file/MONY/2013/04/122.bin,NULL

첫 번째 단계로 이 모든 파일을 수집하여 임시 폴더에 넣었습니다.

하지만 "파일 이름"과 해당 "파일 경로"를 찾아야 하기 때문에 파일 이름을 바꿀 수 없습니다. 이 작업을 수행할 수 있는 방법이 있나요?

답변1

  1. IFS 구분 기호를 ","로 변경합니다.
  2. while 루프는 mysql 쿼리 결과를 순회합니다.
  3. 이전 경로에서 디렉토리 추출
  4. 이름 바꾸기 수행

코드는 다음과 같습니다:

#!/bin/bash
IFS=','
mysql ...executequery... | while read oldpath newfname
do
  filedir=$(dirname $oldpath)
  mv "$oldpath" "$filedir/$newfname"
done

NULL 쿼리 결과를 처리하는 방법에 대해서는 언급하지 않았습니다.

관련 정보