Mucha gente depende de aplicaciones gráficas para buscar archivos / directorios en Linux. Con find se puede buscar por consola y filtrar todo lo que nosotros queramos e incluso ejecutar comandos. Os voy a contar como usarla ya que mucha gente lo desconoce y es algo de conocimiento casi obligado :
find Busca archivos o directorio filtrando con estas opciones:
find: Busca archivos , directorio e incluso texto, usando estas opciones de find:
-type d/f/l –> Especifica que es un directorio (d) / fichero (f) / enlaces (l)
-name "Documents" –> Lo que buscamos (Distingue entre mayusculas y minusculas)
-iname "Resumen" –> Lo que buscamos (NO distingue entre mayusculas y minusculas)
-print –> Que lo muestre por pantalla (No suele ser necesario)
-size +10k –> Que sea superior a 10 Kb
-atime +5 –> Que se haya accedido hace 5 dias
-exec –> Ejecuta una comando –> … -exec cp {} /tmp \; –> {} –> Archivos de la busqueda
-ok –> Ejecuta un comando (Pide confirmacion) –> -ok cp {} /tmp \;
-user usuario –> Filtra por dueño de directorio/archivo
-group grupo –> Filtra por grupo
Ejemplos:
Busca en /home/busi/ todos los archivos mp3 usados desde hace 5 dias de un tamaño superior a 30 kb, los copia y los deja en /home/busi/copia
find /home/busi/ -type f -atime +5 -size +30k -name "*.mp3" -exec cp {} /home/busi/copia \;
Lo mismo que el anterior pero preguntando antes de ejecutarlo
find /home/busi/ -type f -atime +5 -size +200k -name "*" -ok cp {} /home/busi/copia \;
<>
Buscar por grupos:
find /home/ -type l -group busigrupo -name "*" -print
Con ejecutar un comando,.. me refiero a cualquier comando, script,..
echo "Archivo encontrado" > tempi
find /home/busi/ -type f -size -40000k -name "*CACA.avi" -exec mutt -s {} busilezas@gmail.com <>
Recibido Mail –> N 6 root@busindre.com- Fri May 19 02:31 37/1956 /home/busi/SGAE_CACA.avi
Contenido del mail –> encontrado -exec mutt -s /home/busi/tema_sensible.mp3
Buscar texto:
find SGAE -type f -exec grep "http" {} /dev/null \;
Resultado: SGAE:http://youtube.com/watch?v=5t2kuQuh5Ts
Como vemos se pueden hacer muchas cosas, juntarlo con scripts,… Solo hemos de pensarlas un poco y conseguiremos grandes resultados, espero que os haya gustado. Un saludo!
http://www.tuxhuellas.com/
10 comentarios:
gracias por la ayuda
carpincho
muy bueno el post, pero tenes idea como hacer para hacer una busqueda mas amplia, osea quiero buscar todas las carpetas que contengan la palabra "dream" por ej... porque de la forma que se solo puedo buscar si tengo el nombre exacto del archivo o directrorio...
http://moan-linux.blogspot.com/
http://moan-linux.blogspot.com/
http://moan-linux.blogspot.com/
http://moan-linux.blogspot.com/
La forma de buscar la carpeta dream es la siguiente: ejm..
find /home/usuario/ -type d -name "dream*"
donde -type d: que busque directorios
donde -name "dream*" que busque los directorios que comiencen con dream, tambien podrias usar "*dream*", asi podrias mostrar todos los dir q contengan la palabra dream en cualquier parte del nombre
Muchísimas gracias Pablo, llevo tiempo forcejeando con "find" y me lo has explicado en un momento.
Si se pudiera votar por el nuevo estándar del "man" para la web-2 eligiria uno tipo enlaces a explicaciones como la tuya, enhorabuena.
Lo dicho muchas gracias
Guillermo
Desde Córdoba, Andalucía
que bueno el blog...pero sabes como hacer para encontrar un archivo en el sistema por ejemplo: 'xxx' tanto si una o todas las letras del archivo son mayúsculas como minisculas?
La manera de buscar archivos sin distinguir mayusculas o minusculas es con la opcion -iname, ejemplo
find /home/usuario/ -iname "todos*"
bueno y como hago para buscar un texto que este dentro de un archivo y luego qu eese texto se cambie con otro que necesito.?
Por gente como vos... es que todos aprendemos un poquito mas... MUCHAS GRACIAS!!!
Por favor nos dices
¿cómo buscar archivos que NO sean del usuario X?
Estas dos líneas no funcionan:
find /home/que01/www/* -user !='user'
find /home/que01/www/* -user !'user'
Gracias
podemos buscar ficheros que pertenecen a cierto usuario… o que no pertenecen a nadie y han quedado “huérfanos”, con la orden:
find -nouser
Si queremos buscar ficheros de alguien concreto usaremos las opciones -user o -uid. En este último caso deberemos saber el identificador de un usuario, algo que no es lo normal que sepamos, pero siempre viene bien tenerlo en cuenta. Además podemos buscar ficheros que pertenecen a un usuario A o a un usuario B con el parámetro -o, con lo que escribiríamos:
find -user root -o -user www-data
Y como era de esperar, también podemos buscar los ficheros que NO pertenecen a un usuario concreto:
find -not -user www-data
Publicar un comentario