Понадобилось мне тут быстренько сделать новый дистрибутив из уже имеющегося. В данном случае дистрибутив — это zip-архив исходников на C и C++. И вся моя задача заключалась в том, чтобы единообразно поменять комментарии в начале текстовых файлов. В каждом файле была шапка про то, что «лицензировано для такой-то компании», а должна стать другая, без имен компаний, но с информацией, куда бежать за лицензией. И так о всех файлах дерева исходников.
Как бы несложная задача. Одна из тех, которые я раньше решал написанием скрипта на perl (потому что я знаю perl) или ruby (потому что мне нравился ruby).
Но теперь я стал ленивый (хочется сказать, что умный, но не могу, потому что я еще и скромный). И полез в гугл смотреть, как такие задачи решают нормальные люди. Ну, те, которые не лезут в таких случаях в командную строку и не пишут жуткие скрипты на bash, sed и perl.
Я был даже морально готов купить какую-нибудь недорогую программку, заточенную специально под такую задачу. Просто потому, что понадобилось уже не первый раз, и еще понадобится в будущем.
И нашел-таки тыщу-другую таких утилит, среди которых есть и бесплатные. Но все под Windows. Немного уточнил поиск, чтобы найти для Mac. Нашел еще кучку подобного добра. Но не успел ничего скачать или купить, так как в поисковой выдаче обнаружил прелюбопытную информацию. А именно, советуют использовать для моей задачи текстовый редактор Text Wrangler, который бесплатен и является урезанной версией более мощного платного редактора BBEdit.
Ирония в том, что Text Wrangler у меня давно стоит. И я всегда считал его «просто текстовым редактором». Ну и вообще, я поймал себя на мысли, что не понимаю, каким должен быть интерфейс текстового редактора, чтобы им можно было вытворять что-то в сотнях-тыщах файлов за раз. Это ж скорее похоже на какой-то файловый менеджер, а не на редактор.
Я, конечно, подумал, что чуваки из поисковой выдачи гугла просто плохо поняли задачу, но все-таки открыл Text Wrangler. Первое, что я сделал, это попытался открыть сразу весь каталог, а не отдельный файл. К моему удивлению, каталог послушно открылся, и в панельке слева появился список всех файлов во всех вложенных подкаталогах.
Затем я заметил меню Search, тыкнул в него и увидел, что там есть пункт Multi-File Search. Выбрал и убедился, что там не только поиск, но и замена. Дальше, наверное, можно не рассказывать. Нужное дерево каталогов было уже выбрано, оставалось только ввести то, что мы ищем, и то, на что будем это заменять. Делаем «Заменить все» и убираем галочку «подтверждать для каждого файла».
И все получилось. Быстро и просто. Сэкономленное время ушло на написание этой статьи. 🙂
В общем, текстовый редактор Text Wrangler меня удивил. Респект разработчикам и за саму возможность и за то, как органично она встроена. У меня даже проскочила мысль апгрейда на BBEdit, продвинутую платную версию. Но я эту мысль решительно отогнал, так как ведь и бесплатная версия успешно решает мои проблемы!
С другой стороны, это ж явно за гранью нормального текстового редактора. Вот если бы я делал текстовый редактор, я бы это дело безжалостно выпилил. И объяснял бы пользователям, что «пользуйте-ка какой-нибудь другой софт, делающий хорошо именно вот это». Получается, что в данном конкретном случае «я-как-пользователь» радикально несогласен со «мной-как-продуктологом». Такие дела.