Nota: Este artículo fue publicado originalmente en 2013. Algunos pasos, comandos o versiones de software pueden haber cambiado. Consulta la documentación actual de Man Pages para obtener la información más reciente.

En esta guía paso a paso, aprenderás a buscar un archivo en Ubuntu usando criterios complejos (o no).

Cómo buscar un archivo en Ubuntu usando criterios complejos (o no)

A veces necesitas encontrar un archivo y todo lo que sabes es la extensión o el comienzo del nombre del archivo. Una búsqueda potente y flexible para buscar en todos los subdirectorios archivos que coincidan con un criterio es importante. Ubuntu viene con un comando que te permitirá buscar un nombre de archivo exacto o usar un comodín para especificar un criterio. Solo cubriremos lo básico, pero ten en cuenta que el comando find tiene más opciones para especificar criterios más concretos si lo deseas.

Los usuarios de Windows encontrarán que el comando find es el más parecido al comando dir (que sigo intentando usar aunque no estoy ejecutando un Windows Server aquí… jaja).

Esta es la sintaxis: find

find / -type f -iname "MiArchivo.Ext" se usa cuando sabes el nombre exacto. Reemplaza MiArchivo.Ext con tu nombre de archivo.

find / -type f -iname "MiArchi*" si quieres coincidir con más archivos usando un carácter comodín.

Evita la opción -type si quieres buscar directorios, etc.

Aquí hay algunos ejemplos para ayudarte a usar find en algunos escenarios comunes:

Escenarios básicos:

I. Encontrar todos los archivos Zip en un directorio

find /home -name '*.zip'

II. Encontrar todos los archivos MP3 y AAC en un directorio

find /home/MyMusic -name '*.mp3' -o -name '*.aac'

III. Encontrar todos los archivos MP3 y AAC en un directorio usando búsqueda sin distinción de mayúsculas

find /home/MyMusic -iname '*.Mp3' -o -iname '*.aAc'

Escenarios con criterios combinados:

IV. Encontrar todas las películas que ocupan más de 500 mb de espacio

find /home/ -iname '*.avi' -o -iname '*.mpeg' -a -size +500M

V. Encontrar todos los respaldos grandes hechos en las últimas 2 semanas

find /home/ -iname '*.zip' -o -iname '*.bak' -a -size +300M -mtime -14

Canalizar la salida para tomar una acción sobre el conjunto de resultados

En los siguientes ejemplos ten en cuenta lo siguiente:

  • ’{}’ coincide con el archivo que fue encontrado
  • ’ ;’ termina la sentencia exec. Nota que hay un espacio antes del guión.

VI. Encontrar todos los directorios y establecer sus permisos a 755

find /usr/share/MyWPSite/ -type d -exec chmod 755 {} \;

VII. Encontrar todos los archivos y establecer sus permisos a 644

find /usr/share/MyWPSite/ -type f -exec chmod 644 {} \;

VIII. Encontrar todos los archivos de respaldo grandes (mayores a 300 Mb en este caso) con más de 14 días de antigüedad y moverlos a una nueva carpeta

find /home/ -iname '*.zip' -o -iname '*.bak' -a -size +300M -mtime +14 -exec mv '{}' /my/archive/backups/ \;


Aquí tienes una copia de la página man para find:

FIND(1)								       FIND(1)

NOMBRE

       find - buscar archivos en una jerarquía de directorios

SINOPSIS

       find

DESCRIPCIÓN

       Esta página del manual documenta la versión GNU de find. GNU find busca
       el árbol de directorios enraizado en cada nombre de archivo dado evaluando la
       expresión dada de izquierda a derecha, de acuerdo con las reglas de prece-
       dencia (ver sección OPERADORES), hasta que el resultado es conocido (el lado
       izquierdo es falso para operaciones and, verdadero para or), en cuyo punto
       find pasa al siguiente nombre de archivo.

       Si estás usando find en un entorno donde la seguridad es importante
       (por ejemplo si lo estás usando para buscar directorios que son escribibles
       por otros usuarios), deberías leer el capítulo "Consideraciones de Seguridad"
       de la documentación de findutils, que se llama Finding Files y viene
       con findutils. Ese documento también incluye mucho más detalle y
       discusión que esta página del manual, así que puede resultarte una fuente
       de información más útil.

OPCIONES

       Las opciones '-H', '-L' y '-P' controlan el tratamiento de enlaces
       simbólicos. Los argumentos de línea de comandos que siguen a estos se toman como nombres de
       archivos o directorios a examinar, hasta el primer argumento que
       comienza con '-', '(', ')', ',', o '!'. Ese argumento y cualquier argumento
       siguiente se toman como la expresión que describe qué se debe
       buscar. Si no se dan rutas, se usa el directorio actual.
       Si no se da expresión, se usa la expresión '-print' (pero
       probablemente deberías considerar usar '-print0' en su lugar, de todas formas).

Resumen

Has aprendido exitosamente a buscar un archivo en Ubuntu usando criterios complejos (o no). Si encuentras algún problema, verifica los prerrequisitos y asegúrate de que tu entorno de Man Pages esté correctamente configurado.

Artículos relacionados