#4sysadmins

Inicio » Comandos para la búsqueda de archivos

Comandos para la búsqueda de archivos

find: Localiza los archivos buscando por todo el árbol de directorios especificado, revisando los nombres de los archivos, sus fechas de creación, etc. El comando find permite una gran cantidad de opciones y expresiones, es muy recomendable acudir a las páginas man, intentaremos cubrir gran parte pero aun así, no será suficiente.

find [OPCIONES-GENERALES] <PATH> [OPCION1 <argumento> [OPCION2 <argumento>] [OPCION3 <argumento>]…] [COMANDO] <argumentos comando>

La sintaxis es extensa y no es clara, pondré un ejemplo para que podamos verlo mejor y a continuación detallaremos algunas de sus opciones y comandos.

find [-H|-L|-P] /home/syu/* -name "*.txt" -type f -size 10M -perm -640 -exec rm -rf {} \;
  • Opciones Generales:

-H | -L | -P : Destinadas a enlaces simbólicos, -P nunca busca enlaces simbólicos, -L siempre y -H los sigue con excepciones (man find). Estas opciones no suelen usarse habitualmente.

  • Ruta de búsqueda (PATH):

/home/syu/* Indica la ruta desde la cual se empezará la búsqueda. Por defecto find es recursivo, existen opciones para indicar hasta que nivel queremos bajar.

Opciones:

  • name, -type, -size, -perm : Son opciones (nombre, tipo, tamaño y permisos, respectivamente) a las que le pasamos sus correspondientes argumentos.

Comandos a ejecutar:

  • -exec es la acción que en este caso indica que una vez encontrado los resultados se ejecute el comando que se indica a continuación en este caso ‘rm‘ el cual toma como entrada el nombre de los archivos recogidos 1 a 1 mediante {} y por último cerramos la línea con \;

 

Otras opciones:

Nota: Cuando indiquemos una opción con un argumento ‘n‘ existirá la opción de añadir los prefijos + o . Si ningún prefijo es añadido querrá decir que es un valor exacto.

  • Descender hasta X niveles desde el directorio de búsqueda: -maxdepth <nivel>
  • Se accedió al archivo por última vez hace n minutos: -amin n
  • Se accedió al archivo por última vez hace n días: -atime n
  • El estado del archivo fue modificado hace n minutos: -cmin n
  • El estado del archivo fue modificado hace n días: -ctime n
  • Los datos del archivo fueron modificados por última vez hace n minutos: -mmin n
  • Los datos del archivo fueron modificados por última vez hace n días: -mtime n
  • El archivo está vacío y además es o un directorio o un archivo regular : -empty
  • Buscar por el número ID de grupo o usuario respectivamente: -gid <id> o -uid <id>
  • Buscar por el nombre de grupo o usuario respectivamente: -group <name> o -user <name>
  • Buscar por nombre de archivo pasando un patrón de búsqueda: -name <patrón>
  • Buscar por nombre pero no distingue de mayúsculas y minúsculas: iname <patrón>
  • Podemos buscar enlaces simbólicos por nombre: -lname <patrón> o -ilname <patrón>
  • Buscar por tipo de archivo: -t <tipo>
    Nota: los tipos pueden ser algunos como b (bloque), c (caracter), d (directorio), f (fichero regular) o l (enlace simbólico)
  • Buscar por tamaño: -size n[KMG]
  • Buscar por permisos de archivos:

-perm mode: Se usa esta forma para expresar los permisos exactos que tiene que tener un archivo determinado. Por ejemplo:

-perm 0020 ó -perm g=w : Solo el grupo tiene permisos, y deben ser de escritura

-perm -mode y -perm /mode: No son tan restrictivos. Suelen ser las formas habituales. Aceptan permisos octal y en modo simbólico.

Archivos con permisos de lectura para todos los usuarios: -perm -444 y -perm -a+r
Archivos con permisos de lectura y escritura para propietario, lectura para grupo: -perm /640 ó -perm /u=rw,g=r ó -perm /u+rw,g+w

Algunos ejemplos find:

  • Si usamos la opción print (imprimir todos los nombres de archivos que concuerdan con una expresión) debemos de asegurarnos que lo hacemos al final de la línea ya que find cuando ve la opción -print asume que no se proporciona ningún criterio de búsqueda. Supongamos que recordamos que el archivo que buscamos contenía la palabra departamento en su nombre:
$ sudo find -name "*departamento*" -print
  • Podemos usar varios criterios y separarlos con un ‘espacio‘ o -a (cosa que find representará como un AND),  -or y -o serán representado como un OR mientras que un caracter de admiración ‘!‘ niega el patrón (NOT) :
$ sudo find -name "marrón" -o -name "negro" -a -name "coche" ! -name "motocicleta"

 

locate y slocate: Se utilizan para buscar sólo por el nombre del archivo (devuelve todos los archivos que contienen la cadena especificada). La utilidad locate trabaja con una base de datos. slocate incluye características de seguridad que impiden que los usuarios vean los nombres de los archivos de los directorios a los que no tienen acceso. En la mayoría de las distribuciones suelen ser un enlace simbólico.

locate [opciones] PATRÓN

Entre las opciones mas destacadas, de la mas importante es –regex que interpreta el patrón como una expresión regular.

updatedb: Se utiliza para actualizar la base de datos de locate. Si creamos directorios nuevos con nuevos archivos después de haber actualizado la base de datos y no la volvemos a actualizar, locate no encontrará estos archivos

whereis: Localiza archivos binarios, archivos de documentación o configuración.

whereis [opciones] comando

Opciones:

  • Buscar unicamente binarios: -b
  • Buscar solo páginas de manual: -m
  • Localizar archivos fuentes: -s

which: Nos permite conocer la ruta de un determinado comando

type: Si queremos saber como interpreta Linux un determinado comando.

Anuncios

Deja un comentario, Gracias!

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: