Realizar búsquedas básicas de archivos con find y comodines
En este paso, aprenderás a usar el comando find, una de las herramientas más potentes de la línea de comandos de Linux para buscar archivos y directorios. Comenzaremos con búsquedas básicas basadas en el nombre e introduciremos comodines para encontrar patrones de archivos.
Primero, vamos a crear un directorio específico y algunos archivos de ejemplo para nuestra práctica. Esto garantiza que tengamos un entorno controlado para ver cómo funciona find sin afectar otras partes del sistema de archivos.
- Asegúrate de estar en el directorio de inicio correcto. Todo el trabajo de esta práctica se realizará dentro de
~/project.
cd ~/project
- Crea un nuevo directorio llamado
find_lab y entra en él.
mkdir find_lab
cd find_lab
- Ahora, vamos a crear un conjunto de archivos y un subdirectorio para realizar las búsquedas. Usaremos el comando
touch para crear archivos vacíos y mkdir para el directorio.
touch file1.txt file2.log report.txt File1.TXT
mkdir subdir
touch subdir/file3.txt subdir/another.log
Puedes verificar la estructura con el comando ls -R, que enumera los archivos en el directorio actual y sus subdirectorios de forma recursiva.
ls -R
Deberías ver una salida similar a esta:
.:
File1.TXT file1.txt file2.log report.txt subdir
./subdir:
another.log file3.txt
Ahora que nuestro entorno de prueba está listo, comencemos a buscar.
La sintaxis básica para el comando find es find [path] [expression]. El [path] le indica a find dónde empezar a buscar, y la [expression] define qué buscar.
Búsqueda por nombre exacto de archivo
Para encontrar un archivo por su nombre exacto, utiliza la expresión -name. Vamos a buscar el archivo report.txt. Usaremos . como ruta, lo que le indica a find que comience la búsqueda desde el directorio actual.
find . -name "report.txt"
La salida mostrará la ruta al archivo encontrado:
./report.txt
Búsqueda con comodines
Los comodines te permiten buscar archivos basados en patrones. El comodín más común es el asterisco (*), que coincide con cualquier secuencia de caracteres.
Se recomienda como buena práctica encerrar el patrón entre comillas dobles (") para evitar que el shell interprete el comodín antes de que el comando find pueda usarlo.
Vamos a buscar todos los archivos que terminen con la extensión .txt.
find . -name "*.txt"
find buscará recursivamente a través del directorio actual (.) y todos sus subdirectorios:
./file1.txt
./report.txt
./subdir/file3.txt
Observa que File1.TXT no fue encontrado porque -name realiza una búsqueda que distingue entre mayúsculas y minúsculas. Para realizar una búsqueda que ignore las mayúsculas y minúsculas, utiliza la expresión -iname (insensitive name).
find . -iname "*.txt"
Ahora, la salida incluye todos los archivos que terminan en .txt, independientemente de si están en mayúsculas o minúsculas:
./file1.txt
./report.txt
./File1.TXT
./subdir/file3.txt
Búsqueda por tipo de archivo
También puedes indicarle a find que busque solo tipos específicos de objetos del sistema de archivos, como archivos o directorios, utilizando la expresión -type. Usa -type f para archivos regulares y -type d para directorios.
Vamos a buscar solo los directorios dentro de nuestra ubicación actual.
find . -type d
La salida enumera el directorio actual (.) y el subdirectorio subdir que creamos:
.
./subdir
Puedes combinar expresiones para crear búsquedas más específicas. Por ejemplo, para encontrar todos los archivos (no directorios) que terminen en .log:
find . -type f -name "*.log"
Este comando encontrará todos los elementos que sean archivos Y tengan un nombre que termine en .log.
./file2.log
./subdir/another.log
Ahora has aprendido los conceptos básicos del uso de find con patrones de nombres y filtros de tipo. En los siguientes pasos, exploraremos capacidades más avanzadas de este comando.