Reglamento general de los foros   •   FAQ   •   Buscar en el foro •  Registrarse | Iniciar sesión 



Portada » Foros Linux » Administración del sistema » Sistema


Nuevo tema Responder al tema
 [ 5 mensajes ] 
Patrocinadores

Autor
Buscar:
Mensaje

Desconectado
Forista Nuevo
Forista Nuevo
Avatar de Usuario

Registrado: Mar Nov 28, 2006 8:00 am
Mensajes: 43

Nota Publicado: Mié Nov 04, 2009 8:02 pm 
Arriba  
Hola,

estoy intentando mostrar todos los archivos de dentro de un directorio que tienen dos o mas palabras concretas.

He probado con esto:

Código:

find ./ -name '*.*' | xargs grep -l palabra1 more files | xargs grep -l palabra2 2>/dev/null


pero la cosa no funciona...

¿Alguien me ayuda?

 Perfil  

Desconectado
Forista Nuevo
Forista Nuevo
Avatar de Usuario

Registrado: Vie Jun 16, 2006 7:00 am
Mensajes: 24
Ubicación: Venezuela

Nota Publicado: Mié Nov 04, 2009 11:10 pm 
Arriba  
No se si te entendi bien, pero si quieres ver todos los archivos dentro de un directorio, no seria mas facil si te movilizas a traves de el con el comando cd y luedo cuando estes ubicado en el la das un ls.

Ojo corrijeme si no te entendi.

saludos 8)

_________________
..::Eduardo Visbal::..
Linuxero #440451
http://esdebianfritto.blogspot.com/

 Perfil WWW  

Desconectado
Forista Ancestral
Forista Ancestral
Avatar de Usuario

Registrado: Jue Abr 12, 2007 7:00 am
Mensajes: 9186
Ubicación: tras la pantalla (...)

Nota Publicado: Vie Nov 06, 2009 9:19 pm 
Arriba  
yo tiraria por awk.... mas que nada, porque esta hecho para ese tipo de cosas.... :wink: admito que es un poco complicado al principio, pero en cuanto le pillas el truco, es realmente potente.

:D

_________________
#446716
>>"Linux: the operating system with a CLUE... Command Line User Environment".
(seen in a posting in comp.software.testing)

[ DNFD ] - [ F4A ] - [ dotfiles ]

 Perfil WWW  

Desconectado
Forista Medio
Forista Medio
Avatar de Usuario

Registrado: Jue May 05, 2005 7:00 am
Mensajes: 353
Ubicación: Bogotá

Nota Publicado: Lun Nov 09, 2009 4:41 pm 
Arriba  
Hola!

Quieres buscar en un directorio archivos que contengan algunas palabras especificas en su interior o que lleven esas palabras especificas en su nombre?

Juzgando por tu primer comando, creo que te inclinas mas por la primera.

Hagamos el ejercicio completo. Voy a crear 4 archivos de texto y en cada uno voy a escribir 4 nombres distintos.
Código:
[pratt@parsiphae exp]$ echo "Don Quijote" >> archivo1
[pratt@parsiphae exp]$ echo "Sancho Panza" >> archivo2
[pratt@parsiphae exp]$ echo "Dulcinea" >> archivo3
[pratt@parsiphae exp]$ echo "Rocinante" >> archivo4
[pratt@parsiphae exp]$ ls
archivo1  archivo2  archivo3  archivo4


Quiero buscar por los archivos que contengan a Rocinante y Sancho Panza, para hacer eso tengo muchas opciones, pero me voy a centrar en las 2 mas comunes. La primera el uso de find con ayuda de grep/egrep

find . -type f -print | xargs egrep -i '(palabra1|palabra2)'

Nota el uso de la opcion -i en el egrep para evitar problemas con mayusculas o minusculas. Te recomiendo que mires un manual sencillo de expresiones regulares para que entiendas mas a fondo lo que hace el operador "|" dentro del egrep.

Código:
find . -type f -print | xargs egrep -i '(rocinante|sancho panza)'
./archivo2:Sancho Panza
./archivo4:Rocinante


Si solo estuvieras buscando por Sancho Panza bastaria con escribir
Código:
find . -type f -print | xargs grep -i 'sancho panza'
./archivo2:Sancho Panza

En este segundo usamos grep solamente, ya que no necesitamos usar expresiones regulares.

La otra opcion que tendrias para hacer eso mismo, seria usar puramente grep sin ningun otro comando:

egrep -i -R '(palabra1|palabra2)' .

Código:
egrep -i -R '(sancho panza|rocinante)' .
./archivo2:Sancho Panza
./archivo4:Rocinante

En donde la -i indica que no va a diferenciar entre mayusculas y minusculas. -R significa que va a ser recursivo, como quien dice va a buscar en subdirectorios. Lo que va entre comillas es lo que vas a buscar y por ultimo el "." indica que vas a empezar desde el directorio actual

Y como seguramente ya lo pensaste, si solo quieres buscar por una palabra:

Código:
grep -i -R 'sancho panza' .
./archivo2:Sancho Panza


Ya como tip adicional, en ambos comandos se podria cambiar el "." por $(pwd) asi tienes el path completo al archivo con el contenido que estas buscando.

Código:
[pratt@parsiphae exp]$ grep -i -R 'sancho panza' $(pwd)
/home/pratt/Transfer/exp/archivo2:Sancho Panza
[pratt@parsiphae exp]$ find $(pwd) -type f -print | xargs egrep -i 'dulcinea'
/home/pratt/Transfer/exp/archivo3:Dulcinea
[pratt@parsiphae exp]$


Y finalmente, si estas buscando por mas palabras, solo debes seguir "separando" con el "|". Como quien dice: '(palabra1|palabra2|palabra3|palabra4|palabra5|palabra6)'

-----------
Por otro lado, solo necesitas buscar por el nombre del archivo, solo es necesario ls y grep. (ls | grep 'palabra1' o ls | egrep '(palabra1|palabra2)')


Saludos

_________________
Mi Foro: http://www.hablarmierda.net
Mi Blog: http://www.michael-pratt.com/blog
Mis Distros: Slackware (Current)| Archlinux

 Perfil WWW  

Desconectado
Forista Mayor
Forista Mayor

Registrado: Sab Ago 25, 2007 7:00 am
Mensajes: 798
Ubicación: Galicia - España

Nota Publicado: Mié Nov 11, 2009 11:21 pm 
Arriba  
@Pratt Me ha gustado lo de cambiar el . por `pwd` es una buena idea.

_________________
Mi blog: Conocimiento Abierto

 Perfil WWW  
Mostrar mensajes previos:  Ordenar por  
 [ 5 mensajes ] 
Nuevo tema Responder al tema

Saltar a:  


 Temas relacionados   Autor   Respuestas   Vistas   Último mensaje 
Mostrar Archivos Grandes En Apache

en Redes y Servidores

ps-ax

0

498

Mié Ago 05, 2009 9:04 pm

ps-ax Ver último mensaje

Preguntas concretas.

en Instalación de distribuciones

Suerfer

8

1216

Vie Ago 12, 2005 4:23 am

Suerfer Ver último mensaje

acl restrincion de palabras

en Redes y Servidores

AlejandroPM

3

132

Mié Feb 24, 2010 3:33 pm

Kde_Tony Ver último mensaje

Borrar palabras con sed

en Programación

Giov

4

1350

Lun Nov 16, 2009 9:57 pm

fpuga Ver último mensaje

colorear palabras en gtk en un text_buffer

en Programación

vampir

2

1091

Lun May 18, 2009 9:02 pm

jroldan84 Ver último mensaje



¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado

No puede abrir nuevos temas en este Foro
No puede responder a temas en este Foro
No puede editar sus mensajes en este Foro
No puede borrar sus mensajes en este Foro
No puede enviar adjuntos en este Foro

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group :: Style based on FI Subice by phpBBservice.nl :: Todos los horarios son UTC + 1 hora [ DST ]
Traducción al español por Huan Manwë
phpBB SEO