Professional Documents
Culture Documents
find
Autor: Sergio Gonzlez D. (sergio.gonzalez.duran@gmail.com)
El comando find de Linux es extremadamente potente, esto es, si logras usarlo adecuadamente. No hay nada mejor para hacer
todo tipo de bsquedas de archivos y carpetas que este comando.
Hay por supuesto otros comandos de bsqueda como awk, sed y grep pero estn ms enfocados a buscar "dentro" de los
archivos. find es mucho ms til para encontrar archivos y directorios. En este artculo aprenders a usarfind como todo un
experto y despus puedas aplicarlo en usos administrativos de todo tipo.
Sintaxis de find
La sintaxis es muy simple:
La [ruta] es cualquier directorio o path que se quiera indicar y desde donde inicia la bsqueda, ejemplos pueden ser "/etc",
"/home/sergio", "/", "." si no se indica una ruta se toma en cuenta entonces el directorio donde se este actualemte, es decir el
directorio de trabajo actual, que es lo mismo que indicar punto ".". De hecho es posible indicar ms de un directorio de bsqueda
como se ver ms adelante en un ejemplo.
La [expresin_de_bsqueda] es una o ms opciones que puede devolver la bsqueda a realizar en si o acciones a realizar sobre
la bsqueda, si no se indica ninguna expresin de bsqueda se aplica por defecto la opcin -print que muestra el resultado de la
bsqueda.
La [accin] es cualquier comando de Linux invocado a ejecutarse sobre cada archivo o directorio encontrado con la
[expresin_de_bsqueda].
Bsquedas bsicas
El siguiente ejemplo busca todos los archivos cuyo nombre sea "reporte" desde la raz:
No ests limitado a un solo directorio, indica ms de uno a buscar antes de las expresiones:
Buscar todos los archivos que hayan cambiado en los ltimos 30 minutos:
O si deseas buscar en un rango especfico de minutos, con este ejemplo buscaras todos los directorios que hayan cambiado hace
ms de 10 minutos (+10) y menos de 30 (-30)
aunque lo anterior sera mas exacto decir los modificados hace 11 minutos o ms
y 29 minutos o menos, ya que como se vio anteriormente +n y -n indican
"mayor que" y "menor que", el ejemplo correcto sera entonces:
find / -mmin +9 -mmin -31 -type d
find ofrece varias opciones de bsqueda por tiempo, pero las principales son: -amin, -atime, -cmin, ctime, -mmin y -mtime. "min"
es para periodos de minutos y "time" para periodos de 24 horas.
Los que empiezan con "a" (access) indica el tiempo en que fue accedido (leido) por ltima vez un archivo. Los que empiezan con
"c" (change) indica el tiempo que cambi por ltima vez el status de un archivo, por ejemplo sus permisos. Los que empiezan con
"m" (modify) indica el tiempo en que fue modificado (escrito) por ltima vez un archivo.
Una consideracin a tener con las bsquedas -atime, -ctime y -mtime es que el tiempo se mide en periodos de 24 horas y estos
son siempre truncados, con ejemplos es ms claro:
El primer ejemplo busca todos los archivos que comiencen con 'ventas' Y que hayan sido modificados o cambiados en las ltims
dos horas (120 minutos).
El segundo ejemplo busca todos los archivos que comiencen con 'reporte' y despus siga un _ o un - y que NO pertenezcan al
usuario sergio.
El tercer ejemplo busca todos los archivos que contengan la palabra enero, Enero, ENERO, etc. (sin importar si lleva maysculas o
minsculas) O cualquier otro archivo que encuentre que pertenezca al grupo 'gerentes'.
El tamao si importa
Una de las actividades bsicas de un administrador de sistemas Linux es monitorear el tamao de archivos, sobre todo de
usuarios. Con find es muy fcil realizar bsquedas por tamao, se indica con la opcin -size, se aplican las mismas reglas para
argumentos nmericos (+n -n n).
find /var/log -size +15000k -name "*.jpg" (busca archivos mayores a 15 megas del tipo jpg)
find $HOME -800c (busca en tu home todos los archivos menores a 800 bytes (799 realmente))
c = bytes
w = 2 byte words
k = kilobytes
b = 512-byte bloques
find . -size 0c
(Aunque la opcin -empty hace lo mismo ms eficientemente)
find . -empty
Cualquiera de los ejemplos anteriores dar un aburrido listado de los archivos y sus rutas. Si lo que quieres es realizar una accin
(ejecutar un comando) sobre estos usa entonces la opcin entonces -exec.
Despus de ls -lh que nos devuelve una salida formateada de ls se indica la cadena '{}' que se sustituye por cada salida de find.
No hay lmite para lo que se puede lograr, asi por ejemplo, borrar todo lo mayor a un mega en /tmp.
Por cierto si usas la versin GNU de find (y creo que todos los que usamos Linux la tenemos, comprubalo con find --version)),
lo anterior tambin funciona directamente con la opcin -delete:
find /tmp -size +3000k -delete (lo mismo que usar -exec con rm)
FEB 3 RD 2014
A la hora de Nombrar comando tiles en Linux Uno de los Primero Que se Vendr a la
mente es el comando encontrar el Cual nos permite buscar archivos / Directorios Bajo Una
serie de Criterios Que Nosotros le argumentemos, ESTO Con La Finalidad De que la
busqueda de mar Posible lo mas exacta. Como las Funcionalidades operacionales Del
Comando Muchsimas hijo de nos remitiremos una ONU USO Bastante sencilla en este
post.
. ENCONTRAR Todos Los Archivos Que terminen en .php
./dir1/app.php
2./dir1/calm.php
./dir1/test1.php
3
4./dir2/foo.php
1
Miguel@MacBook:$ find . -type f ! -name *php
./dir3/caz.html
2
1
Miguel@MacBook:$ find . -type f -not -name *php
./dir3/caz.html
2
1
Miguel@MacBook:$ find . -type f -name "ca*" ! -name *php
./dir3/caz.html
2
tambin, de Podemos Como utilizar el operador "y / o" cuando utilizamos el comando
encontrar y Con Ello Slo Los archivos / Directorios Que Cumplen con los Criterios Listados
Sran.
./dir1/calm.php
4
./dir1/sun.txt
./dir1/test1.php
5
./dir2/foo.php
./dir3/caz.html
6
./dir3/caz.php
dir1//app.php
2
3dir1//calm.php
dir1//test1.php
4dir2//foo.php
1
Miguel@MacBook:$ find . -name ".*"
./dir3/.hid.php
2
./dir3/.hid.php
3
./dir3/hup.txt
2
Miguel@MacBook:$ ll ./dir1/kol.txt
dir1/
2dir1//app.php
dir1//calm.php
3dir1//kol.txt
dir1//sun.txt
4dir1//test1.php
5
6
dir1//tool
: Adems del nombre de Podemos Como utilizar ALGN criterio Adicional Como el
nombre, Permiso, tipo, etc.
2dir1//kol.txt
dir1//sun.txt
1
Miguel@MacBook:$ find /var/ftp -group admin -type d
/var/ftp/site
2
/var/log/secure
4
/var/log/wtmp
/var/log/lastlog
5
/var/log/maillog
/var/log/cron
6
/var/log/sa/sa03
1
[root@mail-old ~]$ find /var/tmp/ -size 50M
/tmp/nohup
2
Como fue Posible Ver el comando encontrar nn pemirte Realizar busquedas de forma
sencilla e Incluir Bastante Una serie de Criterios Que Nos Ayudan a Que esta Mn mar Ms
Eficaz posible.Todas las Salidas Estas Podemos Complementar con Otros Comandos (ms
o menos, awk, corte, etc.).