Necesito agregar etiquetas PHP que rodean un archivo. Es fácil agregarlos usando
find . -exec echo "?>" >> '{}' \;
pero, ¿cómo puedo anteponer la etiqueta <?php
?
text-processing
sed
Gilles 'SO- deja de ser malvado'
fuente
fuente
sed
, y permite agregar un sufijo de respaldo.-i
no es portátil, la sintaxis difiere entre implementaciones y rompe enlaces simbólicos. Sería mejor usar una aplicación que esté diseñada para editar archivos.Podrías usar un
AWK
filtro como este,¿Dónde
PREFIX
está tu cadena de prefijo php?fuente
Todavía no puedo dejar un comentario, pero hacerlo todo en un solo paso:
fuente
Puedes hacer eso con un perl one-liner:
Las
-0777
fuerzas de archivos sorber modo, por lo que todo el archivo se leen como una sola línea.-p
permite el bucle.-i
permite la edición en el lugar del archivo.^
indica el comienzo de una línea.Actualización: como se indica en los comentarios, puede optar por generar automáticamente una copia de seguridad utilizando en
-i.bak
lugar de-i
. Esto proporciona seguridad adicional en caso de errores en su comando. El argumento a se-i
convierte en el sufijo de la copia de seguridad.Al actualizar un montón de archivos, puede ejecutar el comando con
-i.backup${RANDOM}
, verificar que todos los archivos se hayan actualizado correctamente y luego eliminar todos los archivos con esa extensión.fuente
-i
bandera sin sufijo, advierta a los lectores que esto significa que no obtendrá copia de seguridad . Para algunos caracteres más (-i.bak
), obtendrá una copia de seguridad en caso de que su línea única incluya un error tipográfico. Un error tipográfico bastante simple (digamos, olvidando la-p
bandera) puede arruinar su día entero de lo contrario.sed
es para editar transmisiones: un archivo no es una transmisión. Utilice un programa destinado a este fin, comoed
oex
. La-i
opciónsed
no solo no es portátil, sino que también romperá cualquier enlace simbólico que pueda encontrar, ya que esencialmente lo elimina y lo recrea, lo cual no tiene sentido.fuente
ed
para ese propósito, muéstrelo en su respuesta.Una alternativa a lo que escribió para agregar algo al final de cada archivo en el directorio (en
bash
):aunque me gusta tu
find
one-liner :)fuente
$FNAME
debería ser$fname
: por convención, capitalizamos las variables de entorno (PAGER, EDITOR, SHELL, ...) y las variables internas de shell (BASH_VERSION, RANDOM, ...). Todos los demás nombres de variables deben contener al menos una letra minúscula. Esta convención evita anular accidentalmente variables ambientales e internas.Hay una manera simple
fuente