Linux Bash-从数据库值递归重命名文件

Linux Bash-从数据库值递归重命名文件,linux,bash,shell,recursion,Linux,Bash,Shell,Recursion,我对Linux很陌生 我有一个文件夹,大约有1000个文件,文件名存储在数据库下 我想做的是在同一个数据库中用另一个值递归地重命名它们 我的数据库结构 oldVal | newVal oldFileName | newFileName 最短和最有效的方法是什么 提前感谢您提供的提示。是否可以将数据库信息导出到文本文件?如果是,对于MySQL数据库,您可以试试这个 首先,在MySQL中执行此查询 SELECT field1,field2 FROM table INTO OUTFILE

我对Linux很陌生

我有一个文件夹,大约有1000个文件,文件名存储在数据库下

我想做的是在同一个数据库中用另一个值递归地重命名它们

我的数据库结构

oldVal      | newVal
oldFileName | newFileName
最短和最有效的方法是什么


提前感谢您提供的提示。

是否可以将数据库信息导出到文本文件?如果是,对于MySQL数据库,您可以试试这个

首先,在MySQL中执行此查询

SELECT field1,field2
FROM table
INTO OUTFILE '/your/path/with/files/to/rename/export.txt'
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n';
之后,转到/your/path/with/files/to/rename/文件夹并粘贴此

SAVEIFS=$IFS
IFS=$(echo -en "\n\b")
LIST=`cat /your/path/with/files/to/rename/export.txt`
for i in $LIST ;
do
 field1=`echo $i | cut -d',' -f1`
 field2=`echo $i | cut -d',' -f2`
 \mv "./"$field1 "./"$field2
done
IFS=$SAVEIFS

类似帖子中提到的步骤很少。我更喜欢for循环,因为它给了我更多的控制,并且递归地使用内置bash(没有额外的安装/工具)?您的数据库是否包含带有路径的文件名?或者递归地意味着重命名的文件可能需要再次重命名,例如,如果数据库包含条目
name1 | name2
name2 | name3
,那么name1应该重命名为name3?您说数据库是什么意思?你是说这些文件在一些数据库中,比如MariaDB或postgres?或者,你是说我有一个文本文件用作数据库吗?@Cyrus是的,有。[at]user1934428它将被重命名为name2。大卫·马里亚布。