2011-04-07 18 views
26

Tengo una carpeta llena de archivos de texto. Necesito agregar el mismo bloque de texto a cada uno de ellos (y por supuesto sobrescribir el archivo original).¿Script de shell para agregar texto a cada archivo?

Me preguntaba cuál sería la sintaxis correcta del shell Bash para esto. ¿Usaría el gato?

He hecho algunos scripts por lotes, pero no soy un experto en Bash. Cualquier sugerencia apreciada.

+5

Sobrescribir o anexar, ambos son excluyentes? – flolo

Respuesta

32

Utilice la redirección adjunta.

for f in *.txt 
do 
    cat footer >> "$f" 
done 
+0

El OP declara "y, por supuesto, sobrescribe los archivos originales", por lo que sospecho que '>' se desea en lugar de '>>' –

+2

@wiliam, no, esta respuesta agrega el texto del pie de página a cada archivo. no quiere borrar los datos reales de cada archivo. –

+1

Donde 'pie de página 'es un archivo que contiene el bloque de texto que debe adjuntarse a cada archivo. –

6

Si va a tener que hacer esto a través de una secuencia de comandos, puede utilizar eco y anexar redirección para obtener el texto adicional en los archivos.

FILES=pathto/* 
for f in $FILES ; do 
    echo "#extra text" >> $f 
done 
1
sed -i.bak "$ a $(<file_block_of_text)" *.txt 
Cuestiones relacionadas