Fd un gran reemplazo para find en Linux

Sin duda en el mundo de la tecnología la innovación esta siempre presente, cada día existen nuevas herramientas o productos que dejan obsoletos a sus predecesores. Respecto a esto hoy os voy a hablar de fd, un reemplazo de búsqueda sencillo, que busca ser más rápido y eficiente que su predecesor, find.

Hay que tener en cuenta que find es muy antiguo, de hecho, es anterior al nacimiento de GNU/Linux, ya que originalmente proviene del mundo UNIX, aunque más adelante se adaptó dentro del proyecto GNU.

Magnifying glass icons, PD-self, Self-published work

Imagen de Wikimedia

¿Cómo funciona fd?

Busca ser una alternativa simple, rápida y fácil de usar. Si bien no busca reflejar todas las potentes funciones de find, la mayoría de ellas o por lo menos las más utilizadas sí.

Tiene como características principales en que busca utilizar sintaxis simplificada, una salida de terminal coloreada y ser rápido. Las búsquedas no distinguen entre mayúsculas y minúsculas de forma predeterminada. Ignora los directorios y archivos ocultos, por defecto y permite utilizar expresiones regulares, entre otras funcionalidades.

Trabajando con fd

Aunque la herramienta se llama fd, cuando la buscamos en los repositorios nos aparecerá como fd-find, y cuando la queramos utilizar debemos llamar a fdfind. Aunque sino nos gusta este nombre siempre podemos añadir algún nuevo alias al sistema. Esto es debido a que, por lo menos en Debian, en este sistema ya existe un binario llamado fd.

sudo apt install fd-find

Esto es en el caso de sistemas basados en Debian, que utilizan paquetería DEB; en el caso de sistemas basados en Red Hat, con paquetería RPM:

# En versiones actuales de Centos, Fedora o RHEL
sudo dnf install fd-find
# En versiones antiguas
sudo yum install fd-find
# En SUSE u Opensuse
sudo zypper install fd-find

En LMDE, esto es, Linux Mint Debian Edition, he tenido que habilitar el repositorio testing de Debian, para poder instalarlo.

Y Arch y derivadas como Manjaro:

sudo pacman -Syu fd

Para crear un alias más amigable, simplemente:

alias fd=fdfind

Para que quede fijo en el sistema, debemos editar el nuestra home el fichero .bashrc o bien .bash_aliases, y añadirlo.

Si consultamos su página de man veremos que tiene también un buen número de parámetros, aunque ni mucho los que llega a tener find.

Ejemplo de uso de fd

Si utilizamos la herramienta sin parámetros nos mostrará una lista de todos los ficheros desde donde nos encontremos.

fdfind
#O si utilizamos el alias que hemos creado
fd

Un ejemplo:

Uso básico de fdfind

En cambio, permite por ejemplo buscar extensiones de archivos, utilizando el parámetro -e, como sigue:

fd ‑e png

Y si queremos afinar un poco podemos utilizar expresiones regulares:

fd '^c.*png$'

De esta forma buscamos ficheros que empiecen por «c» y tengan extensión png. Veamos otro ejemplo:

Filtrado por extensión y nombre

Tipos de ficheros y distinción entre mayúsculas y minúsculas

Podemos pedir a fd que busque directorios, archivos (incluidos aquellos que son ejecutables y vacíos) y enlaces simbólicos. También poder hacerlo con la opción -t (tipo), seguido de una de las letras siguientes:

  • f: Fichero.
  • d: Directorio.
  • l: Enlace simbólico.
  • x: Fichero ejecutable.
  • e: Fichero vacío

Por ejemplo, para que nos muestre únicamente los enlaces simbólicos:

fdfind -tl

Por ejemplo como en la imagen de mi portátil:

Mostrar únicamente enlaces simbólicos

Respecto a cómo funciona la distinción entre mayúsculas y minúsculas con los patrones de búsqueda, escribimos lo siguiente para buscar primero los archivos que contienen «file» en sus nombres de archivo, y luego los que contienen «File» en sus nombres de archivo:

fdfind -tf file
#O bien
fdfind -tf File

Con el resultado:

Distinción entre mayúsculas y minúsculas

En el primer comando, usamos un patrón de búsqueda en minúsculas, lo que hizo que fd operara sin distinción entre mayúsculas y minúsculas. Esto significa que tanto «File» como «file» son coincidencias válidas.

Nuestro segundo comando contenía un carácter en mayúsculas, lo que hizo que fd operara de manera sensible entre mayúsculas y minúsculas. Esto significa que solo «File» es una coincidencia válida.

Estos son algunos ejemplos de uso, la herramienta tiene muchas más posibilidades, que os envito a descubrir.

Para obtener más información:

Página de Github de fd