如何在shell中递归正则表达式重命名?

时间:2014-01-02 20:43:52

标签: php linux bash wordpress-plugin batch-rename

我正在使用Wordpress Eazyest画廊创建2000个画廊。某些文件在文件名中有两个或三个破折号。例如: abc --- def.jpg

在Wordpress管理员和前端,他们会被替换,这个文件名为 abc-def.jpg ,因此他们会成为破坏的链接/来源。

有没有办法可以使用SSH替换单个字符的文件夹中的所有 - 或 - ?我在Ubuntu 12.04上。在Wordpress核心上的任何其他解决方案也是受欢迎的。尝试在/wp-includes/formatting.php上注释掉这一行但是没有用:

$static_characters = array_merge( array( '---', ' -- ', '--', ' - ', 'xn–', '...', '``', '\'\'', ' (tm)' ), $cockney );

2 个答案:

答案 0 :(得分:1)

我在其他地方找到了它,似乎有效

find . -depth -name '*foo*' -execdir bash -c 'mv -i "$1" "${1//foo/bar}"' bash {} \;

用作:

find . -depth -name '*---*' -execdir bash -c 'mv -i "$1" "${1//---/-}"' bash {} \;

有趣的是我意外地运行了第一个示例命令并搞砸了一切。幸运昨天获得了完整的图像备份。

答案 1 :(得分:0)

也许您可以在远程计算机上尝试使用此bash命令将文件名中的多个短划线替换为带有单个短划线的文件名?

for file in `ls *\-\-*`; do mv $file `echo $file | sed 's/\-\{1,5\}/\-/'`; done

此命令最多可将5个连续短划线替换为单个破折号。