Busca y Encuentra en Linux con el Comando Find

Año 2015. Era sábado y estaba completando una migración de todos los sitios de un servidor dedicado a Linode. La mayoría sitios en Drupal, el cual como casi todo CMS, necesita que los permisos de los archivos y carpetas sean ideales para impedir hackeos.

Buscando cual debería ser el conjunto correcto de permisos me topé con un script en Bash que ayuda en esa tarea. Cuando leí el código encontré un comando nuevo para mí. El comando find de Linux. A continuación, comparto parte del script y trataré de explicar un poco dicho comando.

Comando Find

En realidad este comando es muy poderoso. Al usarlo, puedes buscar archivos o directorios en todo el sistema o especificando un punto de partida, es posible determinar una expresión por la cual se obtendrán resultados y además se puede especificar otro comando Linux a ejecutar una vez encuentre lo que se busca.

Este es un fragmento del script para corregir permisos de una instalación de Drupal 7:

for x in ./*/files; do
    find ${x} -type d -exec chmod ug=rwx,o= '{}' \;
    find ${x} -type f -exec chmod ug=rw,o= '{}' \;
done

La sintaxis del comando es:

find [ruta-donde-buscar] [opciones] [expresión]

Teniendo en cuenta eso, el comando anterior se podría traducir así:

  • find ${x}: en la ruta actual dentro de ./*/files/
  • -type d o -type f: buscar directorios(letra d) o archivos(letra f)
  • -exec chmod...: por cada resultado, ejecuta el comando especificado
  • '{}': es una referencia que se reemplaza por el nombre de cada archivo/directorio encontrado

Dicho comando también lo uso en un script que compartí en este espacio para borrar los fastidios archivos AppleDoubles. Esos molestos .DS_Store y los que son copia de los originales pero precedidos por una guión bajo, ejemplo, archivo.html y el fastidioso sería ._archivo.html.

find /path/to/folder -depth -name ".DS_Store" -exec rm {} \;
find /path/to/folder -depth -name "._*" -exec rm -Rf {} \;

El comando find es uno de los ejemplos de aquella premisa del mundo Unix/Linux que dice que cada herramienta hace una cosa pero lo hace excelentemente.

Algunos enlaces útiles:
Alvin Alexander
Life Wire
Conquering The Command Line

Para aprender más de este comando, en una consola, escribe man find 😉

Anuncios

Autor: cesc1989

Ingeniero de Sistemas que le gusta escribir y compartir sobre recursos que considera útiles, además que le gusta leer manga y ver anime.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s