Comandos no shell: find

El primer comando que veremos es find. Dicho comando, se usará para buscar archivos, resulta extremadamente útil, pero a los principiantes en Linux les puede resultar un poco complicado, no solo porque tiene opciones, comprobación y argumentos del tipo acción, sino también los resultados de un argumento pueden afectar a los resultados de los argumentos posteriores.

Antes de meternos en materia con las opciones, en las comprobaciones y en los argumentos, vamos a estudiar un sencillo ejemplo del archivo test en su ordenador local. Hágalo como root para asegurarse de que dispone de los permisos necesarios para rastrear todo el sistema.

salida_find

Dependiendo de su instalación, posiblemente encuentra otros muchos archivos llamados test que empieza con / y después mostrar el nombre del archivo en pantalla. Parece fácil.

Sin embargo, nos llevará un tiempo ejecutarlo en nuestro ordenador si compartimos Linux con Windows en la red temblará. Esto se debe a que nuestro sistema Linux se superpone (usando SAMBA) a una parte de nuestro sistema de archivos de Windows. Es como si también se hubiese rastreado, aunque nosotros sabemos que el archivo que buscamos estaba en sistema Linux.

find_ejemplo2

Esta vez volveremos a encontrar el archivo en nuestro sistema, pero mucho más rápido, y sin rastrear otros sistemas de archivos superpuestos.

La sintaxis completa del comando find es:

find_ejemplo3

La parte [path] es sencilla podemos usar la ruta absoluta, como /bin, o una ruta relativa, como .. Si fuese necesario, tambien puede especificar múltiples rutas, por ejemplo find /var /home.

[opciones].- Hay muchas opciones, las principales las vemos en la siguiente tabla:

find_opciones

Se puede proporcionar a find un gran número de comprobaciones,  y todas las pruebas envían true o false. Cuando find está trabajando, tiene en cuenta, uno por uno, todos los archivos que se encuentra y aplica todas las comprobaciones, según el orden de definición de dicho archivo. Si una prueba envía false, find abandona el archivo en el que está trabajando y sigue con el siguiente. Si la prueba envía true, find lleva cabo la siguiente comprobación a acción en el archivo actual. Las pruebas que aparecen en la siguiente tabla son las más comunes,

find_test

También podemos combinar estas pruebas usando operadores. La mayoría tiene dos formas: la abreviada y la completa, como mostramos en la tabla siguiente:

find_operadores

Puede configurar la preferencia de comprobaciones y operadores usando paréntesis. Como tiene un significado especial para la shell, debe entrecomillar también los corchetes usando una barra invertida. Además, si usa un patrón para el nombre de archivo, debe también usar comillas para que el nombre no se expanda por la shell sino que se transmita directamente al comando find. Por ejemplo, si quiere escribir la comprobación «más nuevo que el archivo X o con un nombre que comience con un guión bajo», podría escribir:

find_ejemplo4

Uso de find con comprobaciones

Intente buscar, en el directorio actual, los archivos que se han modificado más tarde que dospuntos:

find_con_comprobaciones

Tiene buena apariencia, pero encontrará el directorio actual no deseado. lo único que nos interesa son los archivos regulares. Añada un test adicional, -type f:

En el caso del resultado de arriba no aparece ningún directorio con lo que la salida estándar será la misma.

find_comofunciona

Ahora que podemos buscar archivos con confianza, observemos las acciones que podemos realizar cuando encuentre un archivo que se corresponda con su especificación. Véase la tabla siguiente:

find_acciones

Los comandos -exec y -ok adoptan los parámetros posteriores en la línea como parte de sus parámetros, hasta terminar con una secuencia \;. Efectivamente, los comandos -exec y -ok ejecutan un comando insertado, de manera que dicho comando ha de terminar con un punto y coma de escape, para que así pueda terminar el comando find cuándo debería dejar de buscar opciones en la línea de comando que están pensadas para sí mismas. La cadena mágica » { } » es un tipo de parámetro especial para un comando -exec o -or y es reemplazado por la ruta completa del archivo actual.

Veamos lo con un ejemplo para entender la explicación, veremos que usa un comando seguro como ls:

find_salida_ejemplo1

Como puede ver, el comando find es muy útil. Practique con este comando para ir adquiriendo soltura en su uso.

Deja un comentario

Este sitio utiliza Akismet para reducir el spam. Conoce cómo se procesan los datos de tus comentarios.