Я ищу инструмент OS X, который позволяет мне искать и заменять строку поиска в нескольких файлах. Требования следующие:
Я знаю, что некоторые текстовые редакторы, такие как BBEdit , имеют эту функцию, но я бы предпочел легкий инструмент, который не требует, чтобы я сначала открывал файлы для редактирования.
Если нет никаких инструментов, соответствующих этим требованиям, я бы также рассмотрел альтернативу командной строки. Я знаю это perl
и sed
поддерживаю что-то подобное - решение, которое я могу определить как псевдоним или функцию Bash , будет приветствоваться в этом случае.
Обычно я использую TextMate :
TextMate (1) является/был продуктом для покупки, но TextMate 2 в настоящее время находится в активной разработке с открытым исходным кодом на gitHub и может использоваться бесплатно.
Sublime Text — это то, что я использую, это здорово!
Возвышенный текст:
Вам не нужно открывать файлы с помощью BBEdit. Вы просто указываете его на папку. Это очень мощный инструмент, который я часто использовал с большим количеством файлов HTML.
В дополнение к другим решениям, использующим текстовый редактор, я нашел FAR — Find and Replace , многоплатформенный инструмент для поиска и замены. Это не самый красивый, но похоже, что он делает то, что я ищу.
Я часто использую такие скрипты Ruby:
Dir["**/*.txt"].each { |f|
IO.write(f, IO.read(f).gsub(/search/, "replace"))
}
Или вы можете использовать gets(nil)
с -i
:
ruby -i -e 'print gets(nil).gsub(/search/, "replace")' *.txt
Если вы устанавливаете Bash 4 и включаете globstar, вы также можете использовать **
в оболочках:
sed -i '' 's/search/replace/g' **/*.txt
Это точно sed
было написано, и это соответствует всем вашим требованиям, за исключением того, что кривая обучения немного крутая.
Для более плавного обучения попробуйте TextWrangler от BareBones. Он использует текстовый движок BBEdit и, как мне кажется, обладает полной функциональностью поиска и замены своего старшего брата.
sed
. Можете ли вы привести пример того, как использовать sed
для замены текста в серии файлов, как в (в настоящее время) ruby
ответе выше?Взгляните на мой поиск и замену приложений . Вы можете использовать его для нескольких файлов или каталогов, защитить строки поиска/замены и использовать регулярные выражения.
без холма
Майкл