Мне нужно добавить теги PHP, окружающие файл. Добавить их легко, используя
find . -exec echo "?>" >> '{}' \;
но как я могу добавить тег <?php
?
text-processing
sed
Жиль "ТАК - перестань быть злым"
источник
источник
sed
, и он позволяет добавлять суффикс резервной копии.-i
не является переносимым, синтаксис отличается между реализациями, и это ломает символические ссылки. Вам лучше использовать приложение, которое на самом деле предназначено для редактирования файлов.Вы можете использовать такой
AWK
фильтр,Где
PREFIX
ваша строка префикса php.источник
Я пока не могу оставить комментарий, но сделаю все за один шаг:
источник
Вы можете сделать это с помощью perl one-liner:
В
-0777
силы файл-прихлебывая режим, так что весь файл читается как одна строка.-p
позволяет зацикливание.-i
позволяет редактировать файл на месте.^
указывает начало строки.Обновление: как указано в комментариях, вы можете выбрать автоматическое создание резервной копии, используя
-i.bak
вместо-i
. Это обеспечивает дополнительную безопасность в случае ошибок в вашей команде. Аргумент к-i
становится суффиксом резервной копии.При обновлении группы файлов вы можете выполнить команду с помощью
-i.backup${RANDOM}
, убедиться, что все файлы обновлены правильно, а затем удалить все файлы с таким расширением.источник
-i
флаг без суффикса, пожалуйста, предупредите читателей, что это означает, что вы не получите резервную копию . Еще на несколько символов (-i.bak
) вы получите резервную копию на случай, если в одной строке содержится опечатка. Довольно простая опечатка (скажем, забывание-p
флага) может испортить весь ваш день в противном случае.sed
для редактирования потоков - файл не является потоком. Используйте программу, которая предназначена для этой цели, напримерed
илиex
.-i
Возможностьsed
не только не портативный, он будет также нарушать любые символические ссылки , которые могут возникнуть, так как она , по существу удаляет его и воссоздает его, что не имеет смысла.источник
ed
для этой цели, покажите это в своем ответе.Альтернатива тому, что вы написали для добавления чего-либо в конец каждого файла в каталоге (в
bash
):хотя мне нравится твой
find
однострочник :)источник
$FNAME
должно быть$fname
- по соглашению мы используем заглавные переменные среды (PAGER, EDITOR, SHELL, ...) и переменные внутренней оболочки (BASH_VERSION, RANDOM, ...). Все остальные имена переменных должны содержать хотя бы одну строчную букву. Это соглашение позволяет избежать случайного переопределения внешних и внутренних переменных.Есть простой способ
источник