Su sintaxis es la siguiente:
find [directorio...] | [command..] 'Archivo...'
Por ejemplo si queremos buscar un archivo y no tenemos ni pajolera idea de donde esta ni como se llama pero sabemos que es de texto:
$ find ./ -name "*.txt"
./ es el directorio por donde empieza a buscar
-name es la opcion para buscar por nombre
"*.txt" cualquier archivo con la extensión txt
Aparentemente este comando es secillo pero puede complicarse y dar mucho de si, desde buscar archivos de un determinado peso hasta ejecutar algo cuando lo encuentra. Profundicemos pues en el comando FIND.
OPCIONES
-name | Busca dicho archivo, en el directorio actual o en cualquier subdirectorio. |
-atime n | Verdadero si se accedió al archivo hace n días. El tiempo de acceso de los directorios en la ruta se cambia por el find mismo. |
-ctime n | Verdadero si el estado del archivo se cambió hace n días. |
-group gname | Verdadero si el archivo pertenece al grupo gname. Si gname es numérico y no aparece en el archivo /etc/group, se toma como identificador de grupo. |
-mtime n | Verdadero si la información del archivo fue modificada hace n días. |
-size n[c] | Verdadero si el archivo tiene n bloques de largo (512 octetos por bloque). Si n va seguida de una c, el tamaño es en octetos. |
Ejemplos:
Ej.1
enrique@enrique-desktop:~$ find /etc -name passwd -print
find: «/etc/chatscripts»: Permiso denegado
/etc/pam.d/passwd
find: «/etc/ppp/peers»: Permiso denegado
find: «/etc/cups/ssl»: Permiso denegado
find: «/etc/firestarter/outbound»: Permiso denegado
find: «/etc/firestarter/inbound»: Permiso denegado
find: «/etc/ssl/private»: Permiso denegado
/etc/passwd
Como podéis ver empezando por /etc busca los archivos cuyo nombre es passwd, y le decimos que los muestre "-print", esta opción no es necesaria en la mayoria de diribuciones actuales de linux. Como podeis ver a encontrado 2 archivos y ha dado 6 errores pues no tenemos autorización para mirar en esos directorios. (prueba esto mismo con sudo y veras que no aparece el mensaje "permiso denegado".
Otra opcion sería redireccionando los errores a /dev/null con el operador>2.
$ find /etc -name passwd -print 2> /dev/null
Ej. 2
$ find /etc -name "*wd" -exec cat {} \;
Se buscan todos los archivos cuyo nombre termina con *wd en el directorio /etc y muestra el contenido de cada uno de ellos.
Ej. 3 : Ejemplos por opción.
-user nombre | Se buscarán los archivos cuyo usuario sea nombre. Ejemplo: find / -name unix100 -print 2> /dev/null |
-group grupo | Se buscarán los archivos cuyo grupo sea grupo. Ejemplo: find / -group unix100 -print 2> /dev/null |
-size tamaño -size -tamaño -size +tamaño | Selecciona archivos cuyo tamaño es exactamente el número especificado. Se puede agregar una de las letras [bckw] para indicar que el número representa bloques, bytes, kilobytes, o palabras de 2 bytes, respectivamente. Ejemplo: find /bin -size 20c -print 2> /dev/null Selecciona archivos cuyo tamaño es menor que el número especificado. Ejemplo: find /bin -size -20c -print 2> /dev/null Selecciona archivos cuyo tamaño es mayor que el número especificado. Ejemplo: find /bin -size +20c -print 2> /dev/null |
-type tipo | Se buscarán los archivos cuyo tipo sea tipo, donde algunos de los valores para este pueden ser d para directorios, f para archivos normales, o l para enlaces. Ejemplo: find /bin -type d -print 2> /dev/null |
Ej. 4:
Como ya imaginaras puedes usar comodines. Por ejemplo si buscas un archivo de cuyo nombre no logras acordarte y pero sabes alguna cadena intermedia, por ejemplo contiene la "ab".
$ find / -name "*ab*"
para parar pulsa ctrl+c. (hay muchos que contienen esa cadena).
Ej 5:
Si quieres ser mas exigente en la busqueda puedes indicar a find que tipo de fichero buscas, aqui te dejo una lista de los posibles tipos de ficheros.
b bloque especial
c carácter especial
d directorio
p tubería (pipe)
f fichero regular
l vínculo simbólico (léete el man page para que veas unas cuantas especificaciones)
s socket
D Puerta (Solaris)
$ find / -type f -name "*.log"
buscar todos los ficheros regulares con la extensión .log
Nota: Tenia esta entrada en el tintero desde hace tiempo. Estaba pendiente de completar pero por falta de tiempo no he podido asi que cualquier comentario o rectificación sera bienvenido.
No hay comentarios:
Publicar un comentario