Añadir línea a varios archivos
12 de marzo de 2023
---
A veces descargo textos que encuentro en algún
gopher. Por lo general, tengo cuidado de guardar
la referencia, por si alguna vez quiero citarlo.
Pero a veces se me olvida. Tiempo después, si su
autor/a no firmó (aunque a veces el estilo
funciona como firma), ya es imposible recordar de
dónde vino.
Así que pensé que sería buena idea hacer lo
propio y añadir alguna línea de referencia al
final de mis textos. El comando cat habría
bastado. Pero yo quería hacerlo de golpe con todos
los archivos de un directorio.
Se me ocurrió un modo de hacerlo. Probablemente
haya mejores (quizá con el editor sed, por
ejemplo) u otros hayan empleado este mismo.
Excepto que esta vez no utilicé ningún buscador,
sino que lo hice nomás a prueba y error. Y cuando
funcionó, me sentí casi Rocky al final de las
escaleras con mi pequeño, inútil, pero
intransferible sentimiento de victoria. Lo
comparto aquí, por si a alguien más le resulta de
utilidad.
1. Creamos el archivo con la firma:
cat > firma
El cursor se coloca, entonces, en una nueva línea
para que insertemos el texto deseado. En mi caso:
--
escrito por ~alberto en texto-plano.xyz
gopher://texto-plano.xyz/1/~alberto/archivo
cc by-sa
Con CTRL+d damos por terminado el archivo «firma»,
que queda guardado en el mismo directorio de los
archivos a modificar.
2. Ejecutamos este bucle:
for i in *.txt; do cat firma >> $i ; done
Y listo. Ahora todos los archivos .txt del
directorio tienen al final la firma.
Explicación:
1. for i in *txt; do: hace el bucle (todos los
archivos a modificar, en mi caso, tienen la
extensión .txt). 2. cat firma >> $i: concatena el
archivo «firma» en la última línea del primer
archivo .txt que encuentre en el directorio. 3.
done: hecho lo anterior, vuelve a hacer lo mismo
con el siguiente .txt en el directorio, hasta que
no haya más.
Advertencia: como es sabido, hay que tener cuidado
con el uso de >> en el paso 2. Nótese que son dos
signos 'mayor que' (>>). Uno solo (>)
sobreescribiría todos los archivos .txt con el
único contenido del archivo «firma». Tal vez por
eso, como precaución, sea mejor idea dejar en paz
nuestros originales y enviar los archivos
modificados a otro directorio.
--
(Actualización 14/03/2023: Había puesto aquí un
bucle para enviar una copia de los archivos, ya
con la firma añadida, a otro directorio. No
destruía los originales, pero los nuevos archivos
sólo contenían la firma. Aún no sé dónde está el
error, pero en cuanto tenga tiempo de descubrirlo,
lo pondré de nuevo aquí).