Cómo buscar archivos y carpetas desde SSH
En ocasiones necesitas buscar la localización de un archivo específico o buscar un determinado texto dentro de los archivos de un directorio. SSH proporciona dos comandos diferentes que pueden utilizarse para este propósito. Para buscar la localización de un archivo, puedes utilizar el comando find. Find es una herramienta muy útil y acepta varios argumentos, permitiéndote especificar el término de búsqueda (por ejemplo, por nombre, tipo o incluso fecha de modificación).
Por ejemplo, para buscar un archivo llamado miArchivo.txt en el directorio actual (y sus subcarpetas), puedes utilizar el siguiente comando:
find . -name miArchivo.txt
Si no estás seguro del nombre del archivo o quieres buscar por un resultado parcial del nombre, puedes utilizar el siguiente patrón comodín:
find . -name "miArchivo*"
Si quieres enumerar solo los directorios y no mostrar los archivos:
find . -type d
O si quieres filtrar los archivos modificados en los últimos 2 días, puedes utilizar:
find . -mtime -2
Puedes también buscar por un texto específico dentro de los archivos. El comando a utilizar en este caso sería grep. Grep es una herramienta muy útil y acepta varios argumentos. Puedes ver una lista completo de ellos escribiendo man grep.
Un ejemplo de uso de grep para buscar un determinado texto es el siguiente:
grep "database" configuration.php
El comando de arriba indica a grep que busque la palabra “database” en el archivo configuration.php y muestre el contenido de la palabra. Si no sabes que archivo contiene ese texto, puedes utilizar:
grep -r -H "database" *
Esto hará que grep busqué recursivamente (opción -r) y proporcione el resultado en un formato legible (opción -H) para la palabra “database” en todos (*) los archivos del directorio actual.
Para enumerar solo los archivos que contengan esa palabra que buscas, pero omitan la línea que lo contenga, puedes utilizar el argumento -l:
grep -l "database" *
Esto mostrará los archivos que contengan la palabra “database”, pero no mostrará la línea en sí que la contiene.
Grep se puede usar también para filtrar resultados de otros comandos. Por ejemplo, la siguiente línea solo dará como respuesta el resultado configuration.php:
ls -la | grep configuration.php
En algunos casos, find y grep pueden no ser tan útiles. Por ejemplo, para buscar un determinado archivo en todo el servidor, es mejor utilizar un comando alternativo – whereis o which:
whereis perl
o
which perl
La ejecución de los anteriores comandos localizará el binario perl y mostrarán su ruta exacta.