Tengo un directorio lleno de archivos de texto. Mi objetivo es agregar texto al principio y al final de todos ellos. El texto que va al principio y al final es el mismo para cada archivo.
Basado en el código que obtuve de la web, este es el código para agregar al comienzo del archivo:
echo -e 'var language = {\n$(cat $BASEDIR/Translations/Javascript/*.txt)' > $BASEDIR/Translations/Javascript/*.txt
Este es el código para agregar al final del archivo. El objetivo es agregar el texto };
al final de cada archivo:
echo "};" >> $BASEDIR/Translations/Javascript/*.txt
Los ejemplos que extraje fueron para actuar en archivos individuales. Pensé que iba a tratar actuando en varios archivos usando el comodín, *.txt
.
Podría estar cometiendo otros errores también. En cualquier caso, ¿cómo agrego texto al principio y al final de varios archivos?
fuente
-i
lugar de esta sustitución de archivos no funciona, solo se imprime en stdout.Intenta usar
ex
:donde los comandos son:
bufdo!
ejecuta los siguientes comandos para cada búfer / archivo abierto (nota: no es POSIX )1s/^/HEAD/
- insertaHEAD
texto en la primera línea al comienzo de la línea$s/$/TAIL/
- agregaTAIL
texto en la última línea al final de la líneay los argumentos son:
-s
- modo silencioso / rápido-cxa
- guardar todos los búferes / archivos abiertos y salir*.foo
- todos los archivos en el directorio actual (*
) confoo
la extensión, el uso**/*.foo
de la recursividad (después de permitir Globstar:shopt -s globstar
)fuente
Con
gnu awk
, usando lainplace
extensión yBEGINFILE
/ENDFILE
:fuente
También tiene derecho a ser (con resultados en
.out
archivos):Otra variante más elaborada: los archivos fuente se reemplazan por el resultado:
fuente
Perl one-liner al rescate:
fuente