domingo, 7 de julio de 2013

Buscando desde la consola linux

El comando find se utiliza en gran parte para buscar archivos en sistemas linux. Con find podemos realizar busquedas especifica, para eso tendremos que agregar unos parámetros, observemos los ejemplos descritos a continuación.

El comando find puede buscar los archivos en el directorio actual y sus subdirectorios, ejemplo:

~$find
./Maildir/.INBOX.Drafts
./Maildir/.INBOX.Drafts/tmp1
/Maildir/.INBOX.Drafts/Tmp2
/Maildir/.INBOX.Drafts/tmp3
./Maildir/.INBOX.Drafts/new
./Maildir/.INBOX.Drafts/cur
./Maildir/.INBOX.Drafts/maildirfolder

Si queremos encontrar con find los archivos con nombre "tmp" se utiliza el argumento "-name".
veamos el siguiente ejemplo:
~$find -name "tmp*"
./Maildir/.INBOX.Drafts/tmp1
/Maildir/.INBOX.Drafts/tmp3

Ahora si quisiéramos encontrar con find todos los archivos tmp pero sin importar si es mayuscula/minuscula utilizaremos el argumento "iname", este para obtener archivos con nombres que no son.

observemos el siguiente ejemplo: 
~$find -iname "TMP*"
./Maildir/.INBOX.Drafts/tmp1
/Maildir/.INBOX.Drafts/Tmp2
/Maildir/.INBOX.Drafts/tmp3

Buscaremos con find archivos creado en un directorio especifico. puedes usar "name" o "iname"

ejemplo:
~$find /home/jack/ -iname "*.pdf"
/home/jack/phone.pdf
/home/jack/iphone.pdf
/home/jack/sip.pdf

Encontrar todos los ficheros en la carpeta "home"
~$find /home/  -type f

Encontrar todos los directorios en la carpeta "home"
~$find /home/  -type d

Para localizar los archivos que tienen una cierta cantidad de caracteres, usaremos la letra "c" la cual es la abreviatura de "Characters".
Buscando archivos con exactamente 1.000 caracteres
~$ find -size 1000c

Buscando archivos con mas de 1.000 caracteres
~$ find -size +1000c

Buscando archivos con menos de 1.000 caracteres
~$ find -size -1000c

Encontrar los archivos que contienen entre 600 y 700 caracteres.
~$find -size +599c -and -size -701c

Encontrar directorios y ficheros vacios
$ find  -empty

Podemos utilizar find para buscar archivos de determinado tamaño, estos pueden ser en:
c = bytes
w = 2 palabras byte
k = kilobytes
b = bloques de 512 bytes

Buscar archivos con determinado tamaño
~$find /home/jack/ -size 48k

Buscar archivos con mas tamaño
~$find /home/jack/ -size +48k

Buscar archivos con menos tamaño
~$find /home/jack/ -size -48k


Find puede realizar búsquedas basadas en fechas, para eso debemos de saber los operadores.
Acceso                 ==>> -atime(dia),-amin(minutos)
Cambio de estado ==>> -ctime(dia),-cmin(minutos)
Modificación         ==>> -mtime(dia),-mmin(minutos)

Buscar archivos que fueron accedidos hace 2 dias
~$find /home/jack/ -atime +2

Buscar archivos que fueron modificados hace menos de 5 min
~$find /home/jack/ -cmin -5

Buscar archivos que fue accedido entre 6 y 15 min atras
~$find /home/jack/ -amin +5 -amin -15


En este ejemplo buscaremos con find archivos depositados hace 5 minutos con el operador mtime.
~$find /home/jack/ -mtime -5 -iname "*pdf"
/home/jack/iphone.pdf

Tambien podemos localizar los archivos que han sido modificados desde una fecha/hora propuesta utilizando "touch", para eso almacenaremos la fecha y hora en el archivo temporal "busqueda".
~$touch -d "24 jun 2013 21:45:00" busqueda

Luego utilizaremos busqueda y el parametro "newer" para encontrar los archivos creados despues de la fecha  almacenada en busqueda, ejemplo
~$ find /home/jack/ -newer busqueda

Ahora para buscar archivos creados antes de esa fecha, utilizaremos el parametro el cnewer, ejemplo:
~$ find /home/jack/ -cnewer busqueda

Ahora buscaremos con find archivos y directorios creados por usuario y grupo.
Encontrar archivos propiedad del usuario jack
~$find /home/ -user jack -type f

Encontrar directorios propiedad del grupo nerd
~$find /home/ -group nerd -type d

Con find podemos buscar archivos que no pertenecen a ningún usuario/grupo, estos con el fin de encontrar  algun comportamiento inusual de nuestro linux.
Buscar archivos que no pertenecen a ningún usuario
~$find /etc/ -nouser

Buscar archivos que no pertenecen a ningún grupo
~$find /etc/ -nogroup

Buscar archivos que tienen uid entre 500 y 1000.
~$find /etc/ -uid +500 -uid -1000 -type f

Find puede encontrar archivos de lectura, escritura y de ejecucion.
lectura ==>> -readable
escritura ==>> -writable
ejecucion ==>> -executable

buscar archivo ejecutable en home
~$find /home/ -executable

Buscar archivos con determinados permisos usando find.
~$find /home/ -perm 664