El comando linux find es uno de los comandos linux más útiles que existen, sin embargo es también uno de los comandos que menos se conocen y que los usuarios nuevos aprecian como «muy complicado» sin embargo, una vez que sabes como funciona te das cuenta que es simple y poderoso cuando tienes 1,800,000 archivos y deseas encontrar «unos» pocos archivos que cumplen ciertos parámetros, este comando «simplifica tu vida» de forma extraordinaria y si eres un Administrador de Sistemas Linux o piensas serlo, este es un comando que debes dominar para que tu sistema linux sea más confortable.
Aquí te explico como funciona el comando find y varios ejemplos prácticos para utilizarlos y aprovechar todo lo que este comando puede hacer.
El comando linux find
Cómo dice su nombre en inglés este comando sirve para buscar y encontrar archivos o directorios y puedes hacerlo en base a muchas opciones, por ejemplo: puedes buscar archivos por nombre, por nombres que coincidan con ciertas letras o frases, archivos de ciertos usuarios, creados en cierta fecha y un montón de opciones que trataré de mencionar en los siguientes ejemplos. Espero que te sean útiles.
Te Recomiendo:
«Comandos Linux: find con ejemplos 2da parte»
Lo principal que debes saber es como usar este comando y es que la sinopsis que encuentras con el comando «man find» no es muy calara pues si la vez esto es lo que te dice:
find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression]
He… ok. Así fue como me quedé cuando intenté usar este comando por primera vez y si te ocurre pues no te preocupes esto es lo que significa:
find donde-buscar creterio que-buscar
Teniendo esto en cuenta ahora puedes comenzar a jugar con find y seguir estos ejemplos para entender como funciona y te hagas un experto en este comando.
Ejemplos básicos
1. Listar todos los archivos contenidos en el directorio actual y en los sub directorios
find
./abc.txt ./folder ./folder/prueba.php ./index.php
Este comando es equivalente a escribir cualquier a de los siguientes:
find . find . -print
2. Buscar archivos en una ruta específica
El siguiente comando realizará una búsqueda de archivos que se encuentren en el subdirectorio «prueba» y listará todos los archivos y directorios que de encuentren dentro del este.
find ./prueba ./prueba ./prueba/abc.txt ./prueba/folder ./prueba/folder/prueba.php ./prueba/index.php
3. Buscar un archivo por el nombre
Para buscar un archivo por su nombre puedes utilizar el parámetro -name asi:
find ./prueba -name abc.txt ./prueba/abc.txt
Al realizar una búsqueda con el comando find también puedes utilizar comodines por ejemplo para buscar todos los archivos con extensión php puedes usarlo asi:
find ./prueba -name *.php ./prueba/folder/prueba.php ./prueba/index.php
Existe la posibilidad de que quieras encontrar todos los archivos que tengan extensión .php pero algunos están con mayúsculas, para ignorar entre mayúsculas y minúsculas utiliza -iname para ignorar este criterio.
find ./prueba -iname *.PhP ./prueba/folder/prueba.php ./prueba/index.php
Recuerda que los sub directorios se analizan recursivamente por lo que puedes buscar en todo el sistema de archivos si pones la ruta como / pero debes tener en cuenta que la búsqueda se realizará en todos los directorios dentro del sistema de archivos, incluyendo los sistemas montados por red o en otros dispositivos como DVDs, CDs o USBs, y pueden causar una baja en el desempeño del equipo. Recuerda que siempre puedes cancelar una búsqueda presionando Ctrl+C
4. Invertir el criterio de búsqueda
Si lo que quieres buscar es todo lo que no cumpla con el criterio de búsqueda puedes utilizar el parámetro -not por ejemplo para buscar todos los archivos que no tienen extensión .php
find ./prueba -not -name *.php ./prueba ./prueba/abc.txt ./prueba/folder
5. Buscar solo archivos o solo directorios
Uno de los problemas que todo principiante en linux se encuentra es como listar «solo» los directorios o solo los archivos y para esto el comando find permite hacerlo sin problema
find ./prueba -name abc* ./prueba/abc.txt ./prueba/abc
para buscar solo archivos utiliza el parámetro -type f
find ./prueba -type f -name abc* ./prueba/abc.txt
para buscar solo directorios utiliza el parámetro -type d
find ./prueba -type d -name abc* ./prueba/abc
6. Buscar en múltiples directorios
Es muy útil poder hacer una búsqueda en varios directorios o rutas a la vez y solo hace falta agregarlas en los parámetros.
find ./prueba ./folder2 -type f -name abc* ./prueba/abc.txt ./folder2/abcdef.txt
7. Buscar archivos ocultos
Para realizar la búsqueda de archivos ocultos puedes utilizar el parámetro «.*» como sigue:
find ~ -type f -name ".*"
Para finalizar
El comando linux find es realmente útil y un comando que debes dominar para poder gestionar cualquier sistema linux de forma mas sencilla y confortable ya que te permite encontrar archivos de una forma rápida y precisa.
Comandos Linux: find (primera parte)
Comandos Linux: find con ejemplos (segunda parte)
Comandos Linux: find con ejemplos (tercera parte)
Tu Servidor y Amigo
Luis Armando Medina
Sígueme en Twitter: @larmedina
Haz click en «Me Gusta» y deja un comentario:
By Bitacoras.com 10/29/2013 - 2:31 pm
Información Bitacoras.com
Valora en Bitacoras.com: El comando linux find es uno de los comandos linux más útiles que existen, sin embargo es también uno de los comandos que menos se conocen y que los usuarios nuevos aprecian como “muy complicado” sin embargo, una vez q…
By comandos linux: find con ejemplos 3 02/25/2014 - 12:25 pm
[…] algún tiempo escribí sobre el comando find y una segunda parte donde explicaba con ejemplos como se usa el comando linux find para encontrar […]
By Comandos linux : find con ejemplos | Siguiendo ... 04/29/2015 - 8:09 am
[…] El comando linux find es realmente útil y uno de los comandos linux que debes dominar para poder gestionar cualquier sistema linux de forma mas sencilla […]
By Fede 04/30/2015 - 3:27 am
Muy buena explicación. Muchas gracias por compartir tus conocimientos con los novatos de linux como yo.
He estado probando este comando y me ha sorprendido lo siguiente:
Cuando ejecuto: find ~/ -type d -name Docum*
Me devuelve (como era de esperar): /home/minombredeusuario/Documentos
Sin embargo, cuando ejecuto: find ~/ -type d -name Do*
No me devuelve nada. ¿Cómo puede ocurrir ésto?
By Luis Armando Medina 04/30/2015 - 11:50 am
Es recomendable poner los nombres que deseas encontrar entre comilla doble » por que cuando no está así lo interpreta como una expresión regular, así al ejecutar find ~/ -type d -name «Docum*» y el comando find ~/ -type d -name «Do*» obtienes el mismo resultado. Saludos
By Javier 05/05/2015 - 1:52 am
Hola buenos días,
increíble lo bien que lo has explicado, pero me ha surgido una necesidad más. Le explico, necesito buscar archivos que tengan por ejemplo extensión «*.cpp» pero solo en las carpetas que empiecen por «qw» por ejemplo.
No hay manera de hacerlo, se les ocurre algo? Gracias de antemano.
By Luis Armando Medina 05/07/2015 - 9:21 am
Es interesante el ejemplo de búsqueda que comentas, para este caso puedes utilizar los comodines * o ? en la ruta, aquí te pongo unos ejemplos de lo que puedes obtener:
$ find ./qw* -type f -name «*.cpp»
./qw001/filetoshow01.cpp
./qw003/filetoshow03.cpp
./qwsome/filetoshow04.cpp
./qwsome/filetoshow02.cpp
$ find ./*/qw* -type f -name «*.cpp»
./some/qwother/filetoshow05.cpp
./some/qwother/filetoshow06.cpp
$ find ./ -type f -name «*.cpp»
./qwsome/filetoshow04.cpp
./qwsome/filetoshow02.cpp
./some/notshowthis.cpp
./some/qwother/filetoshow05.cpp
./some/qwother/filetoshow06.cpp
./qw001/filetoshow01.cpp
./qw003/filetoshow03.cpp
Aquí lo interesante es el archivo /some/noshowthis.cpp el cual no se muestra en las primeras dos búsquedas porque no se encuentra en un directorio que tenga las en las dos primeras letras «qw» aunque dentro de el hay un directorio «qwother» en el que si se listan los archivos .cpp dentro de el. Espero que te sea de utilidad. Saludos desde México
By Javier 05/08/2015 - 1:04 am
Muchísimas gracias, me sirve a la perfección.
Saludos desde España!
By Osvaldo Diaz 07/09/2015 - 11:14 am
Hola Luis, muy interesante toda la info que pones, empiezo a involucrarme con Unix/Linux y tengo que hacer un shell que mueva solo los archivos txt del directorio actual a una carpeta por ftp, voy comenzando con el shell y bueno, ya tengo como encontrar los archivos:
find . -type f -name «*.txt» #este comando me trae todos los txt dentro de los subdirectorios, y yo solo quiero los del actual.
me podras ayudar?…
De antemano gracias, saludos desde Queretaro…
By Luis Armando Medina 07/10/2015 - 7:08 pm
Hola Osvaldo, lo que comentas es muy sencillo de hacer, debes utilizar el parametro -maxdepth para limitar la búsqueda al primer nivel de directorios, es decir el directorio actual. El comando quedaría como sigue: find . -maxdepth 1 -type f -name «*.txt» espero que te sea de utilidad.
No olvides darle like al blog y compartir el post en tus redes sociales.
Saludos desde México
By Jesus 09/14/2015 - 1:26 pm
Hola, como puedo buscar el archivo que tiene el numero máximo en este caso mostrar el archivo3.txt.
archivo1.txt, archivo2.txt, archivo3.txt
By Wilmer Garcia 10/24/2015 - 8:59 pm
Saludos, interesante tu post. Por favor indicame si es posible buscar por metadatos con este comando, gracias de antemano.
By Mike 12/03/2015 - 10:59 am
Gracias, me sirvió bastante, excelentes ejemplos muy claros.
By Adrian 12/09/2015 - 8:55 am
Muy útil y muy buenos ejemplos.
Aquí otro con 10 ejemplos mas en castellano: http://www.sysadmit.com/2015/12/linux-buscar-ficheros-directorios-con-find.html
By monica guerrero 01/22/2016 - 11:31 am
Hola buen día,
Muy bien explicado el uso del comando find, gracias por compartir.
Ejecuté el comando find / -name y por consecuencia el comando se metió a buscar en todos lados…¿cómo se puede detener la ejecución de un comando ?
By Luis Armando Medina 01/22/2016 - 11:45 am
Gracias por tu comentario y que bien que has comenzado a usar el comando find. Sobre tu pregunta, cuando se está ejecutando un comando y deseas interrumpirlo puedes usar la combinación de teclas Ctrl+C, esto causa que se envíe una señalización SIGINT (o interrupción) lo que detiene la ejecución del comando. Saludos
By Como encontrar y borrar archivos con más de X días de Antigüedad 12/08/2016 - 4:52 pm
[…] archivos con ciertas condiciones es una tarea que puedes hacer con el comando linux find, este poderoso comando permite encontrar archivos en la ruta indicada en base a muchos parámetros […]
By Comandos linux: find con ejemplos | Blog – BuilderSoft Networks 12/13/2016 - 12:20 pm
[…] algún tiempo escribí sobre el comando find y una segunda parte donde explicaba con ejemplos como se usa el comando linux find para encontrar […]