我刚开始使用_s wordpress theme,其中的说明是
您要做的第一件事是复制_s目录并更改 命名别的东西。比方说,像megatherium。然后你需要做 三步查找并替换所有模板中的名称。
- 在单引号内搜索
_s
以捕获文本域。- 搜索
_s_
以捕获所有功能名称- 在
醇>_s
之前搜索一个空格,以便在评论中替换它的所有匹配项。 (你用大写的版本替换它 你的主题名称。)或......
Search for:'_s' Replace with:'megatherium' Search for:_s_ Replace with:megatherium_ Search for: _s Replace with: Megatherium
所以我尝试了这个:
#!/bin/sh
find /path/to/wp-content/themes/mytheme/ -type f | xargs perl -pi -e "s/'_s'/'mytheme'/g"
find /path/to/wp-content/themes/mytheme/ -type f | xargs perl -pi -e "s/_s_/mytheme_/g"
find /path/to/wp-content/themes/mytheme/ -type f | xargs perl -pi -e "s/ _s/ mytheme/g"
使用perl对所有文件执行内联搜索/替换,但是当我尝试查看我的wordpress时,这会混淆并返回500错误。
是否有更好的方法来执行搜索&替换一组文件的文本?一个不会把我的PHP搞砸?
修改
我在OSX Lion上运行这个...
当我使用find ./mytheme -name \*.php -type f -exec php -l '{}' \;
时,它表明任何地方都没有语法错误。
编辑2
在询问了这个问题并在新副本上运行了几次后,它正在运行。额外的眼睛就像通过心灵感应来固定东西的魔力。
答案 0 :(得分:4)
如果我正确地阅读了您的问题,那么您要替换的所有文本标记都是:
_s
或_s_
因此'_s'
和_s_setup()
应该被替换,get_s
和_substr()
不应该被替换。断言\b
,以匹配“单词边界”,在这里可能会有所帮助。
$ find /path/to/wp-content/themes/mytheme/ -type f | \
xargs perl -pi -e "s/\\b_s\\b/mytheme/g"
$ find /path/to/wp-content/themes/mytheme/ -type f | \
xargs perl -pi -e "s/\\b_s_/mytheme_/g"
可能会让你更接近你想去的地方。