在文件名中replace通配符

我无法得到这个工作:

我有数百个文件,我们的数据库开发人员愚蠢地把星号,所以我们有像这样命名的文件:

*1*_Floorplan.jpg 

我需要recursion(两级)search并replace所有文件名中的“ * ”的所有实例,并用下划线“ _ ”replace它们。

我已经尝试了以下,但它失败了,输出“mv”命令的使用格式数百次(就好像每个文件它会试图处理),就像我所期望的,如果我有无效的语法,但我似乎无法find它有什么问题:

 for x in `find . -regex '.*/\*.*'` ; do mv $x `echo $x | sed s/\*/_/g` ; done 

这是一个Mac(10.4)系统,所以这是一个达尔文环境,如果这有什么区别。

请帮忙!

把报价放在$ x左右的地方。

 for x in `find . -regex '.*/\*.*'` ; do mv "$x" `echo "$x" | sed s/\*/_/g` ; done 

你需要逃避所有*的领先反斜杠\