2012-03-05 2 views
1

Я только начал использовать _s wordpress theme и инструкции там говорятАвтоматически переименовать _S тему (пакетное поиск & замена текста)

Первое, что нужно сделать, это скопировать каталог _S и изменить имя на что-то другое. Как, скажем, мегасерий. Затем вам нужно будет сделать трехшаговое найти и заменить на имя во всех шаблонах.

  1. Поиск _s внутри отдельных цитат для захвата текстового домена.
  2. Поиск _s_ для захвата всех имен функций
  3. Поиска _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 для выполнения встроенного поиска/замены во всех файлах, однако это что-то путает и возвращает ошибку 500, когда я пытаюсь просмотреть мой Wordpress.

Есть ли лучший способ выполнить поиск & заменить на текст группы файлов? тот, который не будет bork my php?

EDIT

Я бегу это на OSX Lion ...

, когда я использую find ./mytheme -name \*.php -type f -exec php -l '{}' \; Это показывает, что нет никаких синтаксических ошибок в любом месте.

EDIT 2

Задав это, и запустить его пару раз на свежих экземпляров, он работает. Дополнительные глаза похожи на mojo для фиксации вещей посредством телепатии.

+1

«Это все испортит» - в частности, что испортилось? – DVK

+1

Для проверки синтаксиса попробуйте 'find ./mytheme -name \ *. Php -type f -exec php -l '{}' \;' Это будет запускать 'php -l' по каждому из файлов по одному за раз , в отличие от 'xargs', который передает все имена файлов в качестве параметров одной и той же команды. –

+0

Спасибо, @IlmariKaronen, это намного лучше, чтобы использовать 'xargs', как будто у меня это должно быть' find ./mytheme -name \ *. Php -type f | xargs -n 1 php -l' (мне не хватало '-n 1'), но зачем это делать, когда вам не нужно? – JKirchartz

ответ

4

Если я правильно прочитал ваш вопрос, все тексты токенов вы пытаетесь заменить либо:

  1. текст маркера _s или
  2. маркер, который начинается с _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" 

, вероятно, приблизит вас к месту, где вы хотите быть.