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.
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.
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:
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:
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,
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:
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:
Uso de find con comprobaciones
Intente buscar, en el directorio actual, los archivos que se han modificado más tarde que dospuntos
:
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.
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:
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
:
Como puede ver, el comando find
es muy útil. Practique con este comando para ir adquiriendo soltura en su uso.