Cómo usar el comando FIND en Linux y MAC

Hoy aprendemos cómo usar el comando FIND en Linux y MAC. FIND es un comando muy potente de la terminal para buscar archivos.

El nombre del comando lo estoy escribiendo en mayúscula pero recuerda que los comandos se escriben en MINÚSCULA.

Compatibilidad del comando find en Linux y MAC

Este comando viene del sistema Unix, por lo que estará disponible para Linux y Mac. La gran mayoría de opciones existen en los dos sistemas. Sin embargo, algunas opciones pueden variar pero serán mínimas.

Los comandos de este post han sido probados en un sistema operativo MacOS Ventura y un Ubuntu.

¿Ya sabes cómo instalar Ubuntu en un MAC con chip M1?

¿Quieres aprender a usar la terminal en MAC? Aquí tienes una guía y vídeotutorial

¿Para qué sirve comando find?

El comando ‘find’, es muy útil, ya que nos permite buscar archivos y directorios con mucha precisión en el sistema operativo.

Estructura del comando

find ruta [opciones] [criterios] 

En la que:

  • Ruta es la ubicación desde la cual se inicia la búsqueda.
  • [opciones] son parámetros adicionales que modifican el comportamiento del comando. Algunas opciones comunes incluyen:
    • -name para especificar un patrón de nombre de archivo.
    • -type para buscar por tipo de archivo (ejemplo: -type f para archivos regulares, type -d para carpetas)
    • -size para buscar por tamaño de archivo.
    • -mtime para buscar por fecha de modificación.
    • -exec para ejecutar acciones (eliminar, copiar, mover, etc.) sobre los archivos encontrados.
    • Hay muchas más opciones… es cuestión de buscarlo en el manual.
  • [criterios] definen las condiciones de búsqueda basadas en propiedades como el nombre del archivo, tamaño, tipo o fecha de modificación. Se puede utilizar operadores booleanos como: -and, -or, -not y más...

Un ejemplo básico, en el directorio actual (.), buscar los archivos que contengan la extensión png.

find . -type f -name "*.png"

Algunas diferencias del comando find entre Linux y MAC

Algunas diferencias entre los dos sistemas sobr el comando find:

  • En MAC es obligatorio especificarle la ruta, si no la ponemos nos da un error, en cambio con Ubuntu eso no pasa.

Por otra parte en MAC no es necesario comillas para filtrar por nombre, en cambio en Ubuntu si es obligatorio.

Comando find en linux y mac

Sabiendo algunas diferencia entre los dos sistemas, te recomiendo que te mires el manual del sistema donde estás.

Pedir ayuda del comando find

Siempre hay que recurrir a la ayuda por si tenemos dudas, aquí tienes distintas formas de mostrar la ayuda del comando. Desde Linux:

man find
info find
find --help

Desde un MAC:

man find

Ejemplos del comando find en Linux y MAC

Ahora si nos metemos de lleno de ejemplos de cómo usar el comando FIND en Linux y MAC.

Recursividad y profunidad del comando Find

Tienes que saber algo muy importante. El comando find, de manera predeterminada, realiza búsquedas de forma recursiva, es decir, a partir del directorio que le indiquemos irá recorriendo todos los subdirectorios.

Sabiendo esto, tenemos que tener cuidado al eliminar o mover archivos…

Podemos limitar la profundidad o niveles en las que buscará con el parámetro -maxdepth.

Por ejemplo, si queremos que solo busque en el primer subdirectorio de la carpeta actual, escribimos -maxdepth 1

find . -maxdepth 1 -type f

Buscar directorios

Encontrar todos los directorios del directorio actual

find . -type d

Buscar todos los directorios que comiencen con B del directorio actual

find . -type d -name "B*"

Cómo buscar los directorios vacios en Linux o Mac desde la terminal

find . -type d -empty

Buscar archivos

Buscar archivos del directorio actual

find . -type f

Encontrar todos los archivos que acaben en «.jpg»

find . -type f -name "*.jpg"

Así encontramos los archivos que pesen más de 60 megas

find . -type f -size +60M

De esta otra manera buscamos archivos que tengan un pesor menor a 400k.

find . -type f -size +400k

Buscar archivos usando operadores lógicos

El comando find te permite combinar múltiples condiciones para realizar búsquedas más precisas.

Por ejemplo de la siguiente manera buscamos archivos que acaben con extensión «jpg» o «png» en el directorio Pictures.

find Pictures -type f -name "*.jpg" -or -name "*.png"

Un segundo ejemplo del comando find usando operadores booleanos o lógicos. Encontrar archivos con extensión «jpg «y un tamaño mayor a 60 Megas.

find . -type f -name "*.jpg" -and -size +60M

Usando el comando find con -exec

Con la opción -exec te permite ejecutar comandos en los archivos o directorios encontrados durante la búsqueda.

La estructura del comando es la siguiente:

find ruta [opciones] -exec comando {} \;

Este comando me lo enseñaron en Linux cuando estudiaba informática, al inicio no lo entedí pero recuerdo que al año siguiente, me compré un libro de Linux en el que el autor lo explicara muy bien.

  • La llave {}, representa cada nombre de archivo encontrado, al que luego se le aplicará el comando elegido.
  • La barra \; indica el final de la línea para cada archivo encontrado.

En este caso, eliminamos todos los archivos con extensión «png».

find . -type f -name "*.png" -exec rm {} \;

En este otro ejemplo copiamos todos los archivos txt del directorio actual a la ruta indicada /Users/ashtreelane/

find . -name "*.txt" -exec cp {} /Users/ashtreelane/  \;

Recuerda que {representa los archivos encontrados}. La estructura del comando cp es:

cp {origen} destino

Eso es todo chic@s, espero que les sirva y nos vemos en el próximo post 😀

Deja un comentario

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