Archive for the 'bash' Category

tr, el comando para modificar caracteres

El otro día tuve que pasar a minúscula el nombre de una serie (unos 30) de ficheros que me habían pasado. Cambiar el nombre, uno a uno, me hubiera llevado como 10 minutos así que busqué algún script que automatizara el trabajo.

El script que encontré es el siguiente :

for i in `ls -1`; do mv $i `echo $i |tr “[:upper:]” “[:lower:]“`; done

Fácil y rápido, te pasa a minúscula todos los caracteres que estuvieran a mayúscula para los ficheros dentro del directorio desde donde ejecutes la sentencia.

Este pequeño fragmento de código me dió a conocer un comando que no conocía tr, que según su página man, sirve para “traducir, –estrujar– y/o eliminar caracteres”.

Ciertamente este comando no es muy potente ya que sólo permite especificar ún carácter o un grupo de los ya predefinidos, la lista puede verse ejecutando tr --help. Esto impide definir expresiones regulares, pero claro, el objetivo de este comando no es ese.

Algunos ejemplos más son los siguientes:

# Cambia espacios en blanco por guión bajo
tr [:blank:] _

# Cambia todo aquel carácter que no sea un carácter de control o de puntuación
tr -c "[:cntrl:][:punct:]" "*"