Buscando donde existen archivos con el comando find

El comando unix find es uno de los más empleados al interactuar con un computador a través de un shell pero es también uno de los más subutilizados. La cantidad de opciones con que cuenta es considerable y los efectos de sus combinaciones resulta en un aún más amplio espectro de posibles resultados, por lo que es un comando que requiere tiempo aprender a usar y dominar (aunque su uso básico es fácil y rápido de entender) .

Hace mucho tiempo escribí algo sobre el uso del comando find para evitar un determinado directorio. Desde entonces me he topado con la necesidad de usarlo en labores de búsqueda muy selectivas o rebuscadas pero que no he documentado y co ello se ha perdido la solución a ellas. Nuevamente me encontré en una de esas situaciones de las que no quiero que se pierda la respuesta y que nos lleva a un par de posts.

Aunque el título de esta entrada parece trivial para lo que el comando hace, he decidido titularla así por ser el antecedente de lo que verdaderamente me motivó a continuar esta serie, que fue precisamente lo contrario. Si lo anterior le parece extraño o contradictorio, mi querido lector, es señal de que está prestando atención pero deberé pedirle que espere a la siguiente entrega para entender enteramente el asunto.

Al respecto de la motivación mencionada, creo importante dar algo de contexto. Resulta que para un repositorio que cree en GitHub, consideré apropiado organizarlo por lenguajes de programación, teniendo cada uno de ellos su propio directorio. Durante su creación, en la interfaz web de GitHub, se pregunta por la adición de un archivo .gitignore. Aunque ya tenía tres lenguajes de programación contemplados, debí elegir sólo uno de ellos para servir de template al .gitignore. Pensé que luego podría agregarle lo necesario para los otros lenguajes.

Sin embargo, otros lenguaje de programación se agregaron a la lista y, si bien con tres de ellos el .gitignore ya se contemplaba grande, más lenguajes lo agrandarían aún más. Entonces consideré que otro enfoque podría ser mejor: que cada directorio tuviera su propio .gitignore. Después de documentarme al respecto opté por dicha opción. Procedí a crear algunos directorios más, a crear los correspondientes .gitignore en ellos, a crear más directorios y no tarde mucho en preguntarme dónde podrían faltarme, que es lo que me llevó a este post.

Buscar dónde ya tenía el archivo .gitignore creado es fácil, ya sea sólo limitándose a la raíz del conjunto de directorios

find . -name .gitignore -mindepth 1 -maxdepth 1

o a un primer nivel de subdirectorios contenidos en éste

find . -name .gitignore -mindepth 1 -maxdepth 2

Al momento que escribo esto, hay otros trece directorios creados, y posiblemente no necesite crear más. El resultado del comando previo podría ser suficiente para el propósito de saber dónde me falta crear un .gitignore por mera inspección visual pero ello obliga a buscar que subdirectorio no aparece. Lo que es una causa de errores y omisiones. ¿Podría hacerse al revés?

Siguiente

Un comentario en “Buscando donde existen archivos con el comando find

Deja un comentario

Este sitio utiliza Akismet para reducir el spam. Conoce cómo se procesan los datos de tus comentarios.