¿Cómo buscar cadenas dentro de archivos en una carpeta?

98

¿Hay alguna utilidad para realizar búsquedas de una cadena dentro de los archivos ASCII para evitar búsquedas en la línea de comandos?

¿Cómo hacer una búsqueda de línea de comando, por ejemplo, para la cadena "prueba" dentro de todos los archivos en el directorio /var/x/?

Nuno
fuente
15
¿Realmente quieres decir sin usar la línea de comando? Porque la mejor herramienta para eso sigue siendo grep ...
alci
En CLI The Silver Searcher probablemente hace un mejor trabajo.
Pablo A

Respuestas:

78

Puedes usar searchmonkey. La herramienta está disponible en los repositorios, por lo que puede simplemente

sudo apt-get install searchmonkey

Por otro lado, la búsqueda de línea de comando con grep realmente está destinada a eso ...

Aquí hay una captura de pantalla de searchmonkey

ingrese la descripción de la imagen aquí

alci
fuente
se estrelló debido a demasiada carga :(
WiredIn
1
He tenido problemas con searchmonkey. No es confiable en el sentido de que deja pasar muchos sucesos
tony gil
¿Cómo ejecuto "searchmonkey" desde la GUI? después de instalar usando la línea de comando, prefiero no usar la línea de comando
Echeban
153

Supongo que su primera pregunta es sobre una alternativa GUI al grepcomando. No puedo ayudarte con eso, siempre encuentro que la línea de comando es muy efectiva.

En cuanto a la línea de comando, intente

grep "test" /var/x/*

Si desea buscar de forma recursiva (es decir, no solo en /var/x/, sino también en sus subdirectorios), haga

grep -R "test" /var/x/

Para evitar grepping los archivos que grep piensa que son binarios, use la -Iopción:

grep -I "test" /var/x/

Si grep piensa que un archivo es binario (basado en los primeros bytes del archivo), asumirá que no coincide en lugar de recorrer todo el archivo.

enero
fuente
1
¿Funcionará si la carpeta contiene algunos archivos no ASCII?
Anwar
1
Bueno, grep también intentará buscar la cadena en un archivo binario e informará si coincide:Binary file file.jpg matches
Enero
1
@Enero Cuando un archivo binario se lee como texto, a menudo tiene "líneas" extremadamente largas (porque un carácter o secuencia de caracteres que se interpretaría para designar el final de una línea puede no aparecer durante mucho tiempo o nunca). Dependiendo de la forma en que se implemente una utilidad de búsqueda de texto, esto podría causar problemas de rendimiento si cada "línea" se lee completamente en la memoria y luego se verifica para ver si coincide con la cadena de búsqueda (que es una forma razonable de grepcodificar, aunque yo no sé si Ubuntu grepestá escrito de esa manera).
Eliah Kagan
1
"grep -i" para búsqueda insensible a mayúsculas y minúsculas
Czarek Tomczak
3
Debería haber un *corte posterior en el camino o grep no parece hacer ningún trabajo en 14.04
DavidScherer
20

Puede usar regexxer , es una gran herramienta de búsqueda / reemplazo de GUI para expresiones regulares.

puedes descargar por:

sudo apt-get install regexxer

ingrese la descripción de la imagen aquí

Seth
fuente
es súper rápido, pero los problemas que tengo con esta aplicación son: 1. no tiene un modo de solo lectura, por lo que no reemplazo ni borro accidentalmente nada 2. muestra el texto, pero no se moverá al línea que el patrón ha coincidido. (¡Desplacé alrededor de 2000 líneas de código para encontrar lo que
buscaba
6

Prueba Recoll, la mejor GUI que he usado. Para instalar recoll en todas las versiones compatibles de Ubuntu, abra la terminal y escriba:

sudo apt install recoll

Necesita un poco de tiempo para indexar los archivos primero (puede definir la ruta de la lista negra o extensiones o MIME).

usuario244846
fuente
Puedo confirmar que Recoll es completamente otro mundo con respecto a gnome-search-toolo search-monkey. Utiliza Xapian, por lo que puede inspeccionar e indexar documentos de Word (tanto .doc como .docx), archivos pdf, carpetas de correo, etc.
Avio
Uh, está disponible a través de deb packaging ( sudo apt install recoll) y hace su trabajo donde incluso grep falla, por ejemplo, con documentos .docx que están comprimidos con compresión pkzip.
Avio
tenga en cuenta que recollprimero se requiere crear un índice.
Yrogirg
5

Puedes usar el grepcomando desde la terminal:

grep -r string *

Este comando encontrará todas las apariciones de "cadena" en todos los archivos en el directorio actual (o subdirectorios).

Para archivos ocultos, puede usar:

grep -r string ..

inquisitivo
fuente
2

Desafortunadamente grep hace un trabajo muy pobre al buscar dentro de archivos de Word (.doc), pero puede canalizar la salida de catdoc a grep. No soy programador, pero este pequeño script funciona bien para mí:

#!/bin/bash
export GREP_OPTIONS='--color=auto'
echo -e "\n
Welcome to scandocs. This will search .doc (NOT .docx) files in this directory for a given string. \n
Type in the text string you want to find... \n"
read response
find . -name "*.doc" | 
while read i; do catdoc "$i" | 
grep -iH --label="$i" "$response"; done

Todas las mejoras y sugerencias son bienvenidas!

Ralph
fuente
1
Esta pregunta fue sobre aplicaciones gráficas y archivos de texto sin formato. No estoy seguro de qué grepy .doctengo que ver con la pregunta.
Andrea Corbellini
Parece correcto, vea la respuesta detallada de enero sobre grep.
aquaherd
2

Acabo de lanzar una herramienta simple para hacer el trabajo. Pensado principalmente para el desarrollador de software, tiene la característica (¿única?) De abrir varios archivos en la misma ventana. Presenta los resultados en el navegador usando Ace editor (¡recomendado!) O html textarea. Es una herramienta basada en Java, por lo que se ejecuta tanto en Windows como en Linux.

¡Echale un vistazo!

https://sourceforge.net/projects/queacetu.gastona.p/

Alejadro Xalabarder
fuente
1

por https://askubuntu.com/a/1141367/47073

Puede usar mate-search-tool, que es lo mismo gnome-search-toolque se eliminó. Tuve problemas con searchmonkey, faltaban algunos resultados y era lento, no lo recomiendo.

Para instalar mate-search-tool:

sudo apt install mate-utils
mate-search-tool
Yrogirg
fuente
0

Puede usar la opción Sublime Text Find in Files del Findmenú para buscar cadenas dentro de archivos desde una carpeta.

Para instalar Sublime Text 3

sudo add-apt-repository ppa:webupd8team/sublime-text-3
sudo apt-get update
sudo apt-get install sublime-text-installer

También puede seguir esta pregunta para conocer otras formas posibles de instalar Sublime en Ubuntu .

Para buscar en todos los archivos una cadena de una carpeta en Sublime Text , puede seguir esta pregunta para obtener respuestas más claras.

MAK Ripon
fuente