
731 - Deja de buscar en Linux como siempre. Hazlo así.
Moderniza Linux: reemplaza find y grep con fd y ripgrep. Tutorial de productividad en terminal, más rápido y simple. ¡Optimiza tus búsquedas ahora!
Durante mucho tiempo he utilizado los comandos find
y grep
para buscar archivos y contenido dentro de ellos en Linux. Son los comandos habituales que encontrarás en cualquier tutorial a lo largo y ancho de Internet. Sin embargo, la llegado de Rust
al ecosistema Linux ha supuesto un punto de inflexión. Algunos desarrolladores han decidido darle una vuelta a la implementación clásica que teníamos de nuestras herramientas. En ocasiones simplemente por hacerlas mas eficientes, pero también en otras ocasiones para dotarlas de mas opciones y posibilidades, y por supuesto, de nuevas características que nos permitan mejorar en nuestro desempeño. Así, como te digo, si buscas en internet, seguro que encontrarás que te siguen indicando que para realizar búsquedas en Linux, tienes que utilizar las herramientas antes mencionadas, pero, esto ya no es así. Como te digo, tenemos a nuestra disposición, nuevas herramientas mucho mas potentes que te van a permitir realizar búsquedas de forma mucho mas eficiente y eficaz

Deja de buscar en Linux como siempre. Hazlo así.
¿Quienes son fd
y ripgrep
?
Las dos herramientas con las que puedes mejorar sensiblemente tus búsquedas en Linux
son fd
y ripgrep
. Estas dos, son herramientas modernas de lineas de comandos, implementadas en Rust
. Su principal ventaja respecto de las clásicas es que son significativamente mas rápidas, y además, cuentan con una sintaxis mucho mas sencilla e intuitiva.
Así fd
se especializa en encontrar archivos y directorios. Su enfoque es la simplicidad y velocidad. Por defecto, su comportamiento es mas inteligente que find
para el usuario moderno, ya que ignora archivos y directorios ocultos e ignora automáticamente los patrones definidos en archivos .gitignore
. Esto no quieres decir que no puedas incluir esos archivos y patrones, sino que simplemente los ignora por defecto.
Por otro lado ripgrep
, es una herramienta especializada en buscar patrones de texto dentro de archivos. Su gran baza es la velocidad, lograda gracias a optimizaciones y el uso de expresiones regulares con PCRE2. Además, al igual que fd
, por defecto, ignora archivos y directorios que no son de interés, como pueden ser los binarios o los que están el el .gitignore
.
Característica | fd (find) | ripgrep (grep) |
---|---|---|
Idioma de programación | Rust | Rust |
Velocidad | Más rápido que find | El más rápido de su clase |
Sintaxis | Simple e intuitiva | Simple, centrada en el patrón |
Ignora por defecto | .git , .svn , .gitignore , ocultos | Binarios, .git , .gitignore , ocultos |
Salida | Coloreada (archivos y directorios) | Coloreada (líneas y coincidencias) |
Regex | Expresiones regulares | Expresiones regulares (PCRE2) |
Cinco usos básicos
Encontrar archivos por el nombre
El ejemplo clásico es buscar cualquier archivo que tenga una palabra clave, por ejemplo linux
.
- Con
find
:find -name "*linux*"
- Con
fd
:fd linux
Tienes que tener en cuenta que fd
es Smart Case, esto quiere decir que si el patrón que pones a buscar es en minúsculas el lo realizará de forma Case Insensitive mientras si lo utilizas con mayúsculas entonces si que es Case Sensitive.
Por esta razón no tendrás los mismos resultados si utilizas fd linux
que si utilizas fd Linux
o incluso fd LINUX
Si quieres forzar cualquiera de los otros comportamientos puedes utilizar -s
para Case Sensitive y -i
para Case Insenstive.
En el 90% de los casos, al escribir rápido, solo tecleamos en minúsculas. *Smart Case garantiza que encuentres el archivo aunque no recuerdes si estaba en MiArchivo.txt
o miarchivo.txt
. Pero, si deliberadamente utilizamos una mayúscula, fd
entiende que estás siendo preciso sobre la capitalización del nombre del archivo, y te da resultados más selectivos, como cuando buscas archivos de código con convenciones de nomenclatura específicas, por ejemplo, una clase como MiClase.java
.
Buscar tipos de archivos
Si queremos buscar un archivo de tipo markdown y que contenga la palabra linux
el comando es,
- Con
find
:find -type f -name "*linux*.md
- Con
fd
:fd -s -t f -e md linux
Buscar directorios
Si en lugar de archivos lo que queremos es buscar directorios, el comando es,
- Con
find
:find -type d -iname "*linux*
- Con
fd
:fd -t d linux
Buscar por un texto dentro de los archivos
Aquí lo que necesitamos hacer es una búsqueda recursiva de un texto en todo el árbol de directorios.
- Con
grep
:grep -r Linux
- Con
ripgrep
:rg Linux
Buscar por un texto Case Insensitive
dentro de los archivos
Similar al caso anterior pero en este caso Case inssensitive
.
- Con
grep
:grep -ri Linux
- Con
ripgrep
:rg -iLinux
Cinco trucos imprescindible
- Buscar archivos de tipo markdown que contentan
Linux
en su interior. Esto es algo sencillo como utilizarrg -t md Linux
- Buscar código en archivos Python es algo similar al anterior pero en este caso
rg -t py "import md5"
. Si quieres saber todos los tipos tienes que utilizarrg --type-list
. - Ejecutar comandos sobre los archivos encontrados. Por ejemplo si quieres borrar todos los archivos
.bak
que contengan la palabralinux
lo puedes hacer confd -s -t f -e py linux
- Buscar por archivos con un nombre exacto. Por ejemplo si quieres buscar todos los archivos que se llamen README lo puedes hacer con
fd '^README$'
- Si quieres buscar todos los archivos que no contienen la cadena
TODO
lo puedes hacer con la opción-files-without-match
. Por ejemplorg --files-without-match TODO