从Mysql查询输出检索文件系统中的文件并重命名文件

从Mysql查询输出检索文件系统中的文件并重命名文件

我必须从 bash 调用一个 SQL 查询,该查询输出两列 1000 行

  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 查询结果。

相关内容