【发布时间】:2012-03-23 07:55:29
【问题描述】:
我刚开始使用_s wordpress theme,那里的说明说
您要做的第一件事是复制_s目录并更改 命名为别的东西。比如说,megatherium。然后你需要做 对所有模板中的名称进行三步查找和替换。
- 在单引号内搜索
_s以捕获文本域。- 搜索
_s_获取所有函数名- 搜索
_s,并在其前加一个空格以替换它在 cmets 中的所有出现。 (你可以用大写的版本替换它 您的主题名称。)或者...
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
在询问这个问题并在新副本上运行几次之后,它就可以工作了。额外的眼睛就像通过心灵感应修复事物的魔力。
【问题讨论】:
-
“这把一切都搞砸了”——具体来说,搞砸了什么?
-
对于语法检查,请尝试
find ./mytheme -name \*.php -type f -exec php -l '{}' \;这将在每个文件上一次运行php -l,与xargs不同,它将所有文件名作为参数传递给同一命令。 -
谢谢,@IlmariKaronen,这好多了,使用
xargs就像我拥有的那样应该是find ./mytheme -name \*.php -type f | xargs -n 1 php -l(我错过了-n 1)但是为什么当你不需要管的时候呢? -
我看不出您用于执行搜索和替换的命令为何不起作用的任何原因。您是否检查了服务器日志以了解导致 500 错误的原因?
-
嗯...它现在可以工作了... wtf。感谢大家的宝贵时间,您的 mojo 解决了问题!
标签: regex perl find replace xargs