尝试重命名mysql数据库表以在每个单词中包含大写首字母,例如,名为“renametable”的表将变为“RenameTable”。我有一些来自同事的脚本通过从正确的数据库中获取表名来设法做到这一点,但是由于我们已经更改了服务器,它不再起作用了。我不确定是什么改变所以我会在这里发布脚本,以防你可以帮助我。
首先要将2个脚本放在/ root文件夹中, 然后导航到数据所在的mysql数据库文件夹并运行:
ls -1 | xargs -i /root/rename2.sh {}
rename2.sh:
force=`echo $1 | tr [:upper:] [:lower:]`
if [ -f $1 ];then
mv $1 $force
fi
之后我不得不再运行另一个命令:
ls -1 ../<gooddb> | xargs -i /root/rename.sh {}
其中gooddb是具有正确表命名结构的数据库
rename.sh:
#!/bin/sh
lower=`echo $1 | tr [:upper:] [:lower:]`
if [ -f $lower ];then
mv $lower $1
fi
现在,当我运行第一个命令时,我收到错误:
: not founde2.sh: 2: /root/rename2.sh:
/root/rename2.sh: 7: /root/rename2.sh: Syntax error: end of file unexpected (expecting "then")
之后第二个命令的错误:
xargs: /root/rename.sh: No such file or directory file
即使我允许完全控制这两个文件。
答案 0 :(得分:1)
这看起来像是一条覆盖的行:
: not founde2.sh: 2: /root/rename2.sh:
涉及的Windows行结束($'\r'
),可能吗?