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.
¿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:
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:
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:
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:
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: