Hola a todos, Estaba buscando un buscador de ficheros en un sistema al estilo de lo que ha sacado yahoo para windows el "Yahoo Desktop Search" que indexa periódicamente los ficheros para permitir busquedas rápidas. Yo siempre he usado el find para buscar los ficheros, pero tengo sistemas con 250 Gigas de disco que para encontrar algo se tira lo que no está en los escritos, bueno y si busco un patrón dentro de los ficheros ya es de risa, lo encuentro antes buscando a mano. Sabeis si hay algo similar en Suse, o en linux o en general? Gracias a todos Un saludo Emiliano Sutil
usa locate, este programa bsuca a aprtir de una base de datos rpeviamente actualizada (updatedb), para instalarlo yast -i findutils-locate. La busqueda es automatica --> linux:/home/chakal # time locate xchat |grep bin /opt/gnome/bin/xchat real 0m0.059s user 0m0.055s sys 0m0.001s salu2 El Jueves, 27 de Enero de 2005 09:59, Emiliano Sutil escribió:
Hola a todos,
Estaba buscando un buscador de ficheros en un sistema al estilo de lo que ha sacado yahoo para windows el "Yahoo Desktop Search" que indexa periódicamente los ficheros para permitir busquedas rápidas. Yo siempre he usado el find para buscar los ficheros, pero tengo sistemas con 250 Gigas de disco que para encontrar algo se tira lo que no está en los escritos, bueno y si busco un patrón dentro de los ficheros ya es de risa, lo encuentro antes buscando a mano. Sabeis si hay algo similar en Suse, o en linux o en general?
Gracias a todos
Un saludo
Emiliano Sutil
chakal wrote:
usa locate, este programa bsuca a aprtir de una base de datos rpeviamente actualizada (updatedb), para instalarlo yast -i findutils-locate.
La busqueda es automatica --> linux:/home/chakal # time locate xchat |grep bin /opt/gnome/bin/xchat
real 0m0.059s user 0m0.055s sys 0m0.001s
salu2
Hola chakal, instalado, ahi le he dejado haciendo el upatedb que supongo tardará un rato. Me da que ese sistema no permite buscar patrones dentro de los ficheros, correcto? Por otro lado, el updatedb tiene algun fichero de configuracion para indicarle de los directorios q se quiere hacer el indexado? Muchas gracias por la info, Emi
El Jueves, 27 de Enero de 2005 09:59, Emiliano Sutil escribió:
Hola a todos,
Estaba buscando un buscador de ficheros en un sistema al estilo de lo que ha sacado yahoo para windows el "Yahoo Desktop Search" que indexa periódicamente los ficheros para permitir busquedas rápidas. Yo siempre he usado el find para buscar los ficheros, pero tengo sistemas con 250 Gigas de disco que para encontrar algo se tira lo que no está en los escritos, bueno y si busco un patrón dentro de los ficheros ya es de risa, lo encuentro antes buscando a mano. Sabeis si hay algo similar en Suse, o en linux o en general?
Gracias a todos
Un saludo
Emiliano Sutil
Para hacer busquedas en los ficheros yo suaria un peuqeño script ... Por ejemplo algo asi como: #!/bin/bash declare -i n for i in $(locate *); do n=`cat $i |grep $1|wc -l` if [ n ]; then echo -e "\033[0;32mPatron encontrado en \033[0;31m<$i>\033[0m, contenido:\n" cat $i |grep $1 | more read -p "¿Continuar? (s/n)" c if [ $c == 's' ]; then continue else exit fi fi done El Jueves, 27 de Enero de 2005 10:35, Emiliano Sutil escribió:
chakal wrote:
usa locate, este programa bsuca a aprtir de una base de datos rpeviamente actualizada (updatedb), para instalarlo yast -i findutils-locate.
La busqueda es automatica --> linux:/home/chakal # time locate xchat |grep bin /opt/gnome/bin/xchat
real 0m0.059s user 0m0.055s sys 0m0.001s
salu2
Hola chakal,
instalado, ahi le he dejado haciendo el upatedb que supongo tardará un rato. Me da que ese sistema no permite buscar patrones dentro de los ficheros, correcto? Por otro lado, el updatedb tiene algun fichero de configuracion para indicarle de los directorios q se quiere hacer el indexado?
Muchas gracias por la info,
Emi
El Jueves, 27 de Enero de 2005 09:59, Emiliano Sutil escribió:
Hola a todos,
Estaba buscando un buscador de ficheros en un sistema al estilo de lo que ha sacado yahoo para windows el "Yahoo Desktop Search" que indexa periódicamente los ficheros para permitir busquedas rápidas. Yo siempre he usado el find para buscar los ficheros, pero tengo sistemas con 250 Gigas de disco que para encontrar algo se tira lo que no está en los escritos, bueno y si busco un patrón dentro de los ficheros ya es de risa, lo encuentro antes buscando a mano. Sabeis si hay algo similar en Suse, o en linux o en general?
Gracias a todos
Un saludo
Emiliano Sutil
chakal wrote:
Para hacer busquedas en los ficheros yo suaria un peuqeño script ...
Por ejemplo algo asi como:
#!/bin/bash declare -i n for i in $(locate *); do n=`cat $i |grep $1|wc -l` if [ n ]; then echo -e "\033[0;32mPatron encontrado en \033[0;31m<$i>\033[0m, contenido:\n" cat $i |grep $1 | more read -p "¿Continuar? (s/n)" c if [ $c == 's' ]; then continue else exit fi fi done
Hola de nuevo He creado un script similar al que me has pasado, he tenido que modificar la linea if [ n ]; Porque esa siempre me entraba en el if, por esto if [ $n != "0" ] Asi solo me entra en el if cuando ha encontrado algo. Por otro lado, el locate devuelve tanto directorios como ficheros y al hacer el cat de un directorio me salta con un error, ¿hay alguna manera de evitar estos errores? Gracias de nuevo, con esto casi tengo lo que queria. Salu2 Emi
Si poco a poco se hacen las cosas xD, puedes comprobar si la variable que contiene la ruta es un fichero corriente o un directorio ... Toma esto ya esta mejorado #!/bin/bash declare -i n for i in $(locate *); do n=0 echo $i if [ -f $i ] && [ ! -d $i ] && [ -s $i ] && [ ! -x $i ]; then n=`cat $i | grep -i $1 | wc -l` fi if [ ! -d $i ] && [ $n -gt 0 ]; then echo -e "patron encontrado en \033[0;31m<$i>\033[0m, contenido:\n" cat $i |grep -i $1 |more read -p "Continuar? (s/n)" valor if [ $valor == 's' ]; then continue else exit 1 fi fi clear done exit 0 salu2 El Jueves, 27 de Enero de 2005 13:09, Emiliano Sutil escribió:
chakal wrote:
Para hacer busquedas en los ficheros yo suaria un peuqeño script ...
Por ejemplo algo asi como:
#!/bin/bash declare -i n for i in $(locate *); do n=`cat $i |grep $1|wc -l` if [ n ]; then echo -e "\033[0;32mPatron encontrado en \033[0;31m<$i>\033[0m, contenido:\n" cat $i |grep $1 | more read -p "¿Continuar? (s/n)" c if [ $c == 's' ]; then continue else exit fi fi done
Hola de nuevo
He creado un script similar al que me has pasado, he tenido que modificar la linea if [ n ]; Porque esa siempre me entraba en el if, por esto if [ $n != "0" ] Asi solo me entra en el if cuando ha encontrado algo.
Por otro lado, el locate devuelve tanto directorios como ficheros y al hacer el cat de un directorio me salta con un error, ¿hay alguna manera de evitar estos errores?
Gracias de nuevo, con esto casi tengo lo que queria.
Salu2
Emi
El 2005-01-27 a las 10:35 +0100, Emiliano Sutil escribió:
instalado, ahi le he dejado haciendo el upatedb que supongo tardará un rato. Me da que ese sistema no permite buscar patrones dentro de los ficheros, correcto?
Así es. Yo también me estoy afilando los dientes para cuando haya alguna utilidad como la que mencionas, lo he estado leyendo en una revista técnica hace un par de dias. Me parece que al menos uno de los que tienen ese tipo de productos es amistoso hacia linux, ya veremos.
Por otro lado, el updatedb tiene algun fichero de configuracion para indicarle de los directorios q se quiere hacer el indexado?
La linea de comandos. Pero como se lanza desde un cron, la gente de suse lo ha previsto, y existe. O sea, está en el yast. :-P Mira en /etc/sysconfig/locate. -- Saludos Carlos Robinson
Curioso script, no se me habria ocurrido. Gracias, esto a mi tb me puede ser util, pero querria hacer una pregunta: ¿Cual es la funcion de la 2º linea declare -i n? No lo habia visto en mi vida. Gracias y salu2 El Jueves, 27 de Enero de 2005 12:05, chakal escribió:
Para hacer busquedas en los ficheros yo suaria un peuqeño script ...
Por ejemplo algo asi como:
#!/bin/bash declare -i n for i in $(locate *); do n=`cat $i |grep $1|wc -l` if [ n ]; then echo -e "\033[0;32mPatron encontrado en \033[0;31m<$i>\033[0m, contenido:\n" cat $i |grep $1 | more read -p "¿Continuar? (s/n)" c if [ $c == 's' ]; then continue else exit fi fi done
El Jueves, 27 de Enero de 2005 10:35, Emiliano Sutil escribió:
chakal wrote:
usa locate, este programa bsuca a aprtir de una base de datos rpeviamente actualizada (updatedb), para instalarlo yast -i findutils-locate.
La busqueda es automatica --> linux:/home/chakal # time locate xchat |grep bin /opt/gnome/bin/xchat
real 0m0.059s user 0m0.055s sys 0m0.001s
salu2
Hola chakal,
instalado, ahi le he dejado haciendo el upatedb que supongo tardará un rato. Me da que ese sistema no permite buscar patrones dentro de los ficheros, correcto? Por otro lado, el updatedb tiene algun fichero de configuracion para indicarle de los directorios q se quiere hacer el indexado?
Muchas gracias por la info,
Emi
El Jueves, 27 de Enero de 2005 09:59, Emiliano Sutil escribió:
Hola a todos,
Estaba buscando un buscador de ficheros en un sistema al estilo de lo que ha sacado yahoo para windows el "Yahoo Desktop Search" que indexa periódicamente los ficheros para permitir busquedas rápidas. Yo siempre he usado el find para buscar los ficheros, pero tengo sistemas con 250 Gigas de disco que para encontrar algo se tira lo que no está en los escritos, bueno y si busco un patrón dentro de los ficheros ya es de risa, lo encuentro antes buscando a mano. Sabeis si hay algo similar en Suse, o en linux o en general?
Gracias a todos
Un saludo
Emiliano Sutil
chakal wrote:
Si poco a poco se hacen las cosas xD, puedes comprobar si la variable que contiene la ruta es un fichero corriente o un directorio ...
Toma esto ya esta mejorado
#!/bin/bash declare -i n for i in $(locate *); do n=0 echo $i if [ -f $i ] && [ ! -d $i ] && [ -s $i ] && [ ! -x $i ]; then n=`cat $i | grep -i $1 | wc -l` fi if [ ! -d $i ] && [ $n -gt 0 ]; then echo -e "patron encontrado en \033[0;31m<$i>\033[0m, contenido:\n" cat $i |grep -i $1 |more read -p "Continuar? (s/n)" valor if [ $valor == 's' ]; then continue else exit 1 fi fi clear done exit 0
salu2
El Jueves, 27 de Enero de 2005 13:09, Emiliano Sutil escribió:
chakal wrote:
Para hacer busquedas en los ficheros yo suaria un peuqeño script ...
Por ejemplo algo asi como:
#!/bin/bash declare -i n for i in $(locate *); do n=`cat $i |grep $1|wc -l` if [ n ]; then echo -e "\033[0;32mPatron encontrado en \033[0;31m<$i>\033[0m, contenido:\n" cat $i |grep $1 | more read -p "¿Continuar? (s/n)" c if [ $c == 's' ]; then continue else exit fi fi done
Perfecto, este si que va de perlas.
Muchas gracias Emi
participants (4)
-
Carlos E. R.
-
chakal
-
Emiliano Sutil
-
lordacid