Este tutorial te guiará a través de las diferentes formas de encontrar un directorio en Linux. Como probablemente ya sepas, en Linux todo es un archivo, incluidos los directorios. Y una de las cosas comunes que un usuario de Linux hará en la línea de comandos es buscar un archivo o un directorio.
Existen varios medios y utilidades diferentes utilizados para buscar archivos en la línea de comandos, como find, locate y which. Sin embargo, la última utilidad (which) solo se utiliza para localizar un comando.
Para el alcance de este tutorial, nos centraremos principalmente en la utilidad find, que busca archivos en un sistema de archivos Linux en vivo y es más eficiente y confiable en comparación con locate.
La desventaja de locate es que lee una o más bases de datos creadas por updatedb, no busca a través de un sistema de archivos en vivo. Además, tampoco ofrece flexibilidad en cuanto a dónde buscar (punto de inicio).
A continuación se muestra la sintaxis para ejecutar el comando locate:
# locate [option] [search-pattern]
Para demostrar la desventaja de locate, supongamos que estamos buscando un directorio llamado pkg
en el directorio de trabajo actual.
Nota: En el comando a continuación, la opción --basename
o -b
le indica a locate que solo coincida con el nombre base del archivo (directorio) (que es exactamente pkg) pero no con la ruta (/ruta/a/pkg). Donde \
es un carácter de expansión, deshabilita la sustitución implícita de pkg por *pkg*.
$ locate --basename '\pkg'

Como se puede ver en la salida del comando anterior, locate buscará desde el directorio raíz (/), por eso se coinciden otros directorios con el mismo nombre.
Por lo tanto, para resolver este problema, use find siguiendo la sintaxis simplificada a continuación:
$ find starting-point options [expression]
Veamos algunos ejemplos.
Para buscar el mismo directorio (pkg)
mencionado anteriormente, dentro del directorio de trabajo actual, ejecute el siguiente comando, donde la bandera -name
lee la expresión que en este caso es el nombre base del directorio.
$ find . -name "pkg"
Si encuentra errores de “Permiso denegado”, use el comando sudo de la siguiente manera:
$ sudo find . -name "pkg"

Puedes evitar que find busque otros tipos de archivos excepto directorios utilizando la bandera -type
para especificar el tipo de archivo (en el comando a continuación d
significa directorio) de la siguiente manera:
$ sudo find . -type d -name "pkg"
Además, si deseas listar el directorio en un formato de listado largo, utiliza el interruptor de acción -ls
:
$ sudo find . -type d -name "pkg" -ls

A continuación, la opción -iname
permitirá una búsqueda insensible a mayúsculas y minúsculas:
$ sudo find . -type d -iname "pkg" $ sudo find . -type d -iname "PKG"

Para encontrar información de uso más interesante y avanzada, lee las páginas del manual de find y locate.
$ man find $ man locate
Como último comentario, el comando find es más confiable y eficiente para buscar archivos (o directorios) en un sistema Linux en comparación con el comando locate.
De la misma manera que antes, no olvides enviarnos tus comentarios o preguntas a través de la sección de comentarios a continuación. Por último, mantente siempre conectado a Tecmint.