Сегодня попалась задачка найти все телефоны на сайте под битриксом, мало того в кодировке CP1251. Телефоны за 7 лет раскиданы по файлам включаемых областей по сетке из 35 сайтов на одном ядре Битрикса. Надо было найти все номера телефонов и поставить их под call-tracking "Типичный битрикс-программист" предложил написать поиск на полноценном ЯП (в данном случае на PHP). Но "старый линуксойд" принял решение не заниматься тратой времени и сделать все на утилитах самого unix. Увы CP1251 добавил длинны в этот скрипт, но могущество unix-way чрезвычано велико. Для непосвященных читать такое трудно, выглядит так: find ./ -type f \( \! -wholename "./bitrix/*" -or -wholename "./bitrix/templates/*" \) \! -wholename "./vendor/*" \! -wholename "./local/modules/*/vendor/*" \! -wholename "./upload/*" \! -wholename "./storage/*" \! -wholename "*/node_modules/*" \! -wholename "*/.git/*" -name "*.php" \! -wholename "./local/modules/*" -exec bash -c 'iconv -f CP1251 -t UTF-8 "$1" 2> >(sed "s#^iconv: #$1: iconv: #" >&2) | grep —color=always -PHin "(?!\d)(\+?7|8)\s\-*\(?(800|\d{3})\)?\s\-*\d{3}(\s\-*\d{2}){2}" | sed -e "s#(standard input)#$1#" -e "s#(стандартный ввод)#$1#" ' sh {} \; | less -RS

Теги других блогов: Битрикс Unix поиск телефонов