Indentar archivos con VIM desde consola

Primero creamos una macro donde quedará grabada la secuencia de teclas:

vim -w indent.macro archivoquesea.cc

Escribimos directamente gg=G:wq y le damos a Enter. Esto creará el archivo indent.macro

Para usar esta macro sobre un archivo: vim -s indent.macro archivoaindentar.cc

Podemos crear un script (por ejemplo indent.sh) para que indente los archivo que querramos:

#!/bin/bash

array=(*.cc *.hh)

for filename in "${array[@]}"; do
    vim -s indent.macro "$filename"
done

Fuentes: http://stackoverflow.com/questions/3218528/indenting-in-vim-with-all-the-files-in-folder
http://www.cyberciti.biz/faq/bash-for-loop-array/

Convertir archivos .rrd a diferente arquitectura

Hace poco cambié mi servidor de Debian 32bits a Debian 64bits. Cuando pasé los archivos .rrd de un servidor a otro, vi que daba un error: This RRD was created on another architecture

Para solucionarlo hay que exportar los datos de la vieja arquitectura e importarlos en la nueva.

Exportamos, estando en el directorio donde están los .rrd:

for i in *.rrd;do rrdtool dump $i $i.xml;done

Eviamos los archivos .xml al nuevo servidor y los importamos (ojo con las comillas esta vez):

for i in *.xml; do rrdtool restore "$i" "${i%.xml}"; done

Fuente: http://askaralikhan.blogspot.com.es/2011/08/error-this-rrd-was-created-on-another.html

Reemplazar palabras en uno o varios archivos con sed

Para reemplazar las palabras en uno o varios archivos sin generar ningún archivo intermedio, sería:

sed -i 's/palabravieja/palabranueva/g' archivos*.txt

Si queremos pasar los cambios a otro fichero:

sed 's/palabravieja/palabranueva/g' archivoviejo.txt > archivonuevo.txt

Fuente: http://www.cyberciti.biz/faq/unix-linux-replace-string-words-in-many-files/