Usuario anónimo ¿Quieres tener tu propio blog?
Crear blog gratis en OboLog

Buscando archivos en linux (find)

por banyut
jueves, 27 de marzo del 2008 a las 16:15
guardado en

La instrucción find tiene dos partes.

    find [camino...] [expresión]

Camino es la ruta o rutas a partir de la cual empezara las búsquedas, puede ser una o más de una.

    find ./PDF/ ./xarxa/ -iname "*.pdf"

Todos los pdf que hay en los directorios PDF y xarxa.

La parte de expresión empezara en el momento en que se encuentre uno de estos caracteres

    “-” “(“ “)” “,” “!”

La mejor manera de entenderlo son con ejemplos

Búsqueda de un archivo.

    find . -name “*.txt”

Nos devolverá todos los archivos con extensión txt que haya en el directorio y recursivamente en todos sus subdirectorios.

El comando find distingue entre mayúsculas y minúsculas, así la instrucción anterior no nos devolverá los ficheros que acaben en TXT. Para que no distinga entre mayúsculas y minúsculas tenemos la opción -iname.

    find . -iname “*.txt”

Podemos ejecutar ordenes que afectaran a los ficheros encontrados.

	find . -name "*.bak" -exec rm {} \;

Esta instrucción borraría todos los ficheros acabados en .bak, esto lo hace a través de la opción -exec acompañada de la instrucción a ejecutar, los corchetes {} se refieren a los ficheros que la instrucción find ha encontrado y la barra invertida \; indica el final de la instrucción.

    find . -type d -exec ls {} \;

Otro ejemplo de este uso, lista el contenido de todos los directorios y subdirectorios de la ruta actual.

    find ~/confidencial/* -type f -exec md5 {} >> MD5 \;

Nos busca todos los ficheros del directorio indicado “~/confidencial/*” y a cada uno le aplica la instrucción md5, guardando el resultado en un archivo llamado MD5.

También podemos hacer búsquedas condicionadas.

    find . ! -iname “*.pdf” ! -name “*.jpg”

Que nos devuelve todos los archivos menos los acabados en .pdf o .jpg.

    find . ! -iname “*a*” -iname “*.jpg”

Nos devolvería todos los jpg que no tengan en su nombre la letra “a”.

Find, por defecto omite los enlaces (links), si queremos que la búsqueda siga los enlaces tendremos que añadir la opción -follow.

    find . -follow -name “*empresa*”

Tenemos que tener en cuenta que podemos caer en una especie de bucle, en el que los links nos hagan volver a pasar por un mismo directorio por el que ya hemos pasado.

Una opción que nos puede ayudar a evitar eso, es -maxdepth n, la que indicamos el número máximo de niveles a los que queremos que find llegue.

    find .-follow -maxdepth 5 -name “*empresa*”

Las comparaciones numéricas se especifican como.

  • +n...............mayor que n

  • -n...............menor que n

  • n...............exactamente n

veámoslo.

ficheros a los que se ha accedido por última vez en los últimos 10 minutos.

    find . -amin -10

ficheros a los que se accedido, por última vez, hace un año exactamente.

    find . -atime 365

ficheros de tamaño superior a 1000 kb

    find . -size +1000k

ficheros vacios.

    find . -empty

    find . -empty -type f

También podemos buscar por tipos.

buscar ficheros

    find . -type f

buscar directorios

    find . -type d

buscar enlaces simbólicos.

    find . -type l

O también por los permisos que tengan concedidos o grupo al que pertenezcan.

buscar ficheros del grupo admin

    find . -group admin

ficheros del usuario pepe

    find . -user pepe

ficheros que no pertenezcan a ningún grupo o ningún usuario.

    find . -nogroup

    find . -nouser

ficheros que tengan todos los permisos concedidos para todos

    find . -perm 777

Sobre los resultados de find se pueden ejecutar ciertas acciones, esto se hace indicándolo con -exec orden. la cadena {} se reemplazará por el nombre del fichero que se esta procesando.

    find . -iname "*.html" -exec cat {} \;

Si substituimos -exec por -ok orden, tendrá el mismo efecto pero esta vez nos pedirá confirmación antes de ejecutar la orden.

    find . -iname "*.html" -ok cat {} \;

Todas las expresiones que aquí se han mostrado y muchas más que hay disponibles (consultar man find), se pueden combinar entre ellas.

se han de cumplir las dos expresiones (and implícito)

    expr1 expr2

Solo se ha de cumplir una de ellas

    expr1 -or expr2

Si no se cumple la expr1

    ! expr1

si no se cumple la expr1 y se cumple expr2

    ! expr1 expr2

Copia todas las imágenes jpg o png del directorio Imágenes al directorio dibuix.

    find ./Imágenes/* -iname "*.jpg" -or -iname "*.png" -exec cp {} tmp/dibuix \;

Ponemos en minúsculas todas las letras de los ficheros.

	find -type f -exec rename 'tr/A-Z/a-z/' "{}" \;

Por último, este comando muchas veces nos devuelve una cantidad de errores que en la mayoría de los casos nos impiden poder ver los resultados. Para evitarlos lo que se hace es redireccionarlos hacia la papelera del sistema.

Si queremos buscar un fichero en todo el ordenador, haremos lo siguiente.

    find / -iname nom_fichero

Esto nos devolvería una cantidad de avisos de permiso denegado, la forma de evitarlo es la siguiente.

    find / -iname nom_fichero 2>/dev/null

Los errores (2) los redireccionamos (>) al vacío (/dev/null)

Bueno, las posibilidades son múltiples, solo tenéis que echarle un poco de imaginación.

Relacionados con Buscando archivos en linux (find)

Comentarios sobre Buscando archivos en linux (find)

Alberto es uno de mis mejores amigos jeje... Y creeme, si existen todavía ese tipo de hombres, mi papá es uno de ellos!

Deja tu comentario sobre Buscando archivos en linux (find)

Deja tu comentario
Necesitas tener javascript activado para poder dejar comentarios

Identifícate en OboLog, o crea tu blog gratis si aún no estás registrado.

De esta forma, además, podrás mostrar tu imagen en los comentarios y no tendrás que rellenar tus datos cada vez.

Sobre esta anotación

banyut

banyut escribió esta anotación hace 1 año. En ella habla sobre Comandos.

1 persona ha dejado ya sus comentarios.

Tú también puedes dejar el tuyo.

Temas relacionados

Login

Comentarios

Restaurar el audio en UBUNTU (Alejandro)
Al 50% del compilador me arroja el error de nuevo alguien sabe xq? o tendra alguna solucion??? ......(15 nov)
Importar en openoffice write y calc (R. A.)
Sigo sin resolver un problemita: ¿Puedo o no puedo importar una tabla en Write a Calc?  Microsoft ......(12 nov)
Restaurar el audio en UBUNTU (skater)
muchas gracias! me ayudaste aun no funcionan mis auriculares pero me funciona el sonido con mis ......(12 nov)
Traducción offline con STARDIC (mserra)
Muchísimas gracias, lo echaba de menos....(07 nov)
Python: Variables y asignaciones. (fernando)
Hola, ¿No hay un comando en el interprete de python que muestre las variables que se han definido a ......(06 nov)

Más comentados

Restaurar el audio en UBUNTU (24)
Hay veces que sin saber que es lo que hacemos exactamente, nos cargamos el audio del sistema, no se ...
Convertir Ubuntu Hardy en un Mac OSX Leopard (21)
Para transformar la versión Intrepid Ibex, tenes este otro link. He encontrado un Post en el que de ...
Convertir Ubuntu Intrepid en un Mac (Mac4Lin) (17)
En su día ya vimos un manual de como convertir Hardy en un mac, esta vez lo haremos para Intrepid, ...
Python: Las Listas (16)
Son la esencia de python, las podríamos definir como una secuencia ordenada de elementos encerrados ...
Copias de seguridad en UBUNTU (crontab, rsync, dd) (13)
Hoy abordaremos el tema de las copias de seguridad. El objetivo es montar dos tipos de copias, por ...

Suscripción

Suscríbete al Feed RSS XML

También puedes suscribirte directamente con alguno de los siguientes enlaces:

  • Suscríbete en Bloglines
  • Suscríbete en Google