Un repaso a find: busca ficheros en tu distro Linux

Lupa

Buscar ficheros y directorios es relativamente sencillo con los actuales buscadores integrados en los gestores de archivos, pero en ocasiones puede que nos guste más usar el terminal, o puede que no tengamos más remedio que usar el terminal al no disponer de un entorno gráfico. Por eso, me parecía interesante dar un repaso a find, un comando muy conocido, pero algo olvidado por el uso masivo de entornos gráficos.

Pues bien, find, como su propio nombre indica, no sirve para otra cosa que para localizar ficheros, aunque tiene otras alternativas como locate, etc., nos centraremos en find, ya que es bastante poderoso y nos permite muchas opciones interesantes para realizar nuestra búsqueda con éxito. Si lo usamos tal cual, sin ninguna opción, lo que hará es lanzar una lista similar a la que obtendríamos con un ls, del contenido de todo un directorio (y subdirectorios).

Pero esto no es lo que nos interesa, lo que queremos es personalizar y afinar un poco más la búsqueda para que sea más precisa y nos ayude a encontrar lo que verdaderamente estamos buscando. Para entender como funciona, creo que no hay otra forma mejor que mostrar ejemplos prácticos de find:

  • Para buscar por nombre, podemos usar la opción o criterio de búsqueda “-name”. Por ejemplo, el primer ejemplo busca ficheros/diectorios con un nombre que comienza por “musi”, el segundo que termina en “eon” y el último que contenga la palabra “fundar” dentro del directorio root /:

find / -name "musi*"

find / -name "*eon"

find / -name "fundar"

  • Existe una opción llamada -type, que puede servirnos de filtro  y se puede usar junto a -name. En este caso sirve para especificar el tipo de archivo a buscar. Con B buscamos ficheros especiales en modo bloque, con C ficheros especiales en modo carácter, D para directorios, F para ficheros ordinarios, L para vínculos simbólicos, P para tubería con nombre y S para Socket o conexión de red. Por ejemplo, imagina que quieres buscar un directorio que contenga “hola” al final de su nombre y en el dirctorio Home/usuario:

find /Home/usuario -name "*hola" -type D

  • También podemos buscar por usuario o por grupo al que pertenezca un directorio o ficheros del sistema. Para eso, podemos usar los criterios -user y -group. Imagina ahora que quieres buscar un fichero que contenga “.mp3” del usuario “Rosa” y al grupo “Gatos” en el directorio Descargas:

find /Descargas -name ".mp3" -user Rosa -group Gatos

  • Size nos puede ayudar a buscar por tamaño. En este caso tenemos diferentes opciones para aplicar. Una B indicaría el bloque, si no se indica el tamaño, por defecto será 512 bytes. C para carácteres ASCII de 1 byte, W para palabras (antiguas) de 2 bytes, y K para KiloBytes o 1024 bytes. Por ejemplo, si queremos buscar en / un fichero de 2560 bytes (5bloques ·512), otro de 10 carácteres ASCII, otro de 100KBs, uno de menos de 5MB y otro de más de 30KB:

find / -size 5

find / -size 10c

find / -size 100K

find / -size -5000K

find / -size +30K

Por supuesto, -size sería combinable con todos los criterios de búsqueda anteriores y posteriores, así obtendremos resultados aun más precisos…

  • Incluso se pueden hacer búsquedas por criterios temporales. Con -atime se puede buscar por la fecha de del último acceso. -mtime por fecha de modificación del contenido y -ctime por fecha de la última modificación del inodo.  Por ejemplo, queremos buscar en /Home, un directorio llamado “hola”, perteneciente al usuario “Zaca” y que haya sido modificado hace menos de 3 días:

find /Home -name "hola" -user Zaca -mtime -3

  • Existen más criterios de búsqueda como -perm para efectuar búsquedas por autorizaciones de acceso o permisos, -links para buscar hard links, -inum para número de inodo. Vayamos con nuestro último ejemplo, en este caso, buscaremos un directorio en el directorio actual cuyos permisos sean totales para el usuario propietario y grupo, y ejecución para el resto:

find -type d -perm 771

A veces desconocemos el potencial del terminal y usamos otras herramientas que tal vez no permitan la flexibilidad de lo que ya hay innato. Así que espero haber ayudado en algo con este humilde artículo. Diviértanse y dejen sus comentarios



Isaac P. E.

Soy un apasionado de la tecnología y me encanta compartir, pero sobre todo aprender cada día más. Me gusta todo lo que tenga que ver con la ciencia y leer sobre esta temática. En mi tiempo libre escribo un libro sobre microprocesadores, mi tema favorito. También me gusta realizar diseños electrónicos en Basic Stamp, Arduino, además me encanta jugar con Linux. Algunos de mis estudios son: - Módulo superior de electrónica y microelectrónica. - Módulo de domótica. - Experto en gestión medioambiental en la empresa. - Técnico en prevención en la industria. - Técnico en montaje y reparación de ordenadores. - Técnico en reparación de portátiles. - Técnico en redes informáticas. - Curso GNU/Linux. Otros conocimientos: inglés, ofimática, programación en diversos lenguajes (C, KOP, VHDL, PBASIC, Arduino y HTML), conocimientos avanzados de Windows y Linux,...

Escribe un comentario