4.9.1.- El comando find

find_titulo

La utilidad find implementa un sistema de fuerza bruta para localizar ficheros. Este programa localiza los ficheros buscando por todo el árbol de directorios especificado, revisando los nombres de los ficheros, sus fechas de creación, etc., para localizar los que satisfagan el criterio especificado. Por este motivo find tiende a ser lento, pero es más flexible y tiene mayor probabilidad de éxito, suponiendo que el fichero buscado exista. La sintaxis es:

find_sintaxis

  • Buscar por nombre de fichero.- Podemos buscar por un nombre de fichero usando la expresión -nombre expresión. Si la expresión es un nombre de fichero normal, coincidirá con el nombre o nombres exactos. Podemos emplear comodines poniendo entre comillas la expresión.
    find_ejemplo1

    Búsqueda de un archivo específico.

    Búsqueda de varios archivos usando el comodin.

    Búsqueda de varios archivos usando el comodín.

    Búsqueda especificando directorio y archivos.

    Búsqueda especificando directorio y archivos.

  • Buscar por el modo de permiso.- Si queremos buscar archivos que tengan ciertos permisos, podemos hacerlo usando la expresión -perm modo, donde modo se puede especificar simbólicamente o en forma octal.
    find_perm
  • Buscar por tamaño del fichero.- Puede buscar un fichero por su tamaño usando la expresión -size n. Normalmente, n se especifica en bloques de 512 bytes.

    Búsqueda de un archivo con tamaño entre 50Mb y 100Mb.

    Búsqueda de un archivo con tamaño entre 50Mb y 100Mb.

  • Buscar por grupo.- Con la expresión -gid GID busca los ficheros cuya ID de grupo es GID. La opción -group nombre localiza el fichero cuyo grupo tiene el nombre indicado. La primera es muy útil en caso de que la GID se haya quedado huérfana y no tenga nombre, pero la segunda es más fácil de usar.

    find_group

    El separador «|» al lado del comando comando «more» al final de la línea nos permite que cuando el terminal se llene haga una parada para continuar con la página siguiente.

  • Buscar por ID de usuario.- Con la expresión -uid UID busca los ficheros cuyo propietario tiene la UID como ID de usuario. La opción -user nombre busca los ficheros cuyo propietario es el nombre. La primera nos puede ayudar en caso de que la UID se haya quedado huérfana y no tenga nombre, pero la segunda suele ser más fácil de usar.
    find_user
  • Restringir la profundidad de la búsqueda.- Si queremos buscar en un directorio y desea limitar el número de subdirectorios en los que buscar, puede emplear la expresión -maxdepth niveles para limitar la búsqueda.
    find_maxdepth

Existen muchas variantes y opciones adicionales ya que es un comando muy popular. Como último ejemplo vamos a buscar los ficheros del código fuente en C+, que normalmente tienen nombres que acaban en .cpp, en todos los directorios home.

find_ejemplo5Como apunte final hace falta recordar que los usuarios normales pueden utilizar find, pero éste no sobrepasa los permisos de los ficheros de Linux. Si carece de permisos para listar el contenido de un directorio, find devolverá el nombre de dicho directorio y el mensaje de error Permiso denegado.

find_denegado