Un naúfrago en una isla


Comando en linux para reemplazar texto

Reemplazar un texto por otro en varios ficheros a la vez se puede convertir en algo tedioso, sobre todo si esos ficheros no están ubicados en el mismo directorio, o incluso puede darse el caso de que no sepamos que ficheros necesitan ser reemplazados. Para ello tenemos este pequeña sentencia que nos ayudará a hacerlo del tirón :)

find . -name  "*.txt" -exec sed -i 's/TEXTO1/TEXTO2/g' {} \;

Este comando lo que hará es buscar todos los ficheros con extensión txt en el directorio y subdirectorios desde donde estamos lanzando el comando, y reemplazará en todos los ficheros que encuentre la palabra TEXTO1 por la palabra TEXTO2.

En el caso de que queramos cambiar cualquier fichero sin importar la extensión tan solo tenemos que sustituir -name  ”*.txt” por -type f

find . -type f -exec sed -i 's/TEXTO1/TEXTO2/g' {} \;

Nunca está de más recordar que es una sentencia bastante peligrosa ya que no hay marcha atrás. Hay que estar muy seguro de lo que queremos sustituir y donde queremos sustituirlo ;)

Share

Un par de sentencias útiles en linux

Para encontrar texto en ficheros (búsqueda recursiva):

find . -name "*.php" -exec grep -i -H -n 'texto_a_buscar' {} \;

Si queremos buscar en cualquier fichero y no solamente en los que tengan extensión PHP, tan sólo tenemos que sustituir “-name *.php” por “-type d”

Para cambiar los permisos recursivamente, pero solamente de los directorios (o carpetas, como más os guste llamarlos):

find . -type d -exec chmod 0755 {} \;

Esta última sentencia hay que ejecutarla como root. Si lo que queremos es cambiar el permiso solamente de los ficheros tan sólo hay que cambiar “-type d” por “-type f” . Al igual que con la búsqueda de texto, si solamente queremos cambiar los permisos a los ficheros con determinada extensión (por ejemplo .php), tan sólo tenemos que cambiar ‘-type f’ por ‘-name “*.php”‘.

Espero que os sea de utilidad :)

Share