Estoy usando Opensuse 10.3 y me gusta conocer las herramientas de línea de comandos para buscar frases en una gran cantidad de archivos pdf dentro de un directorio. En Windows XP, la búsqueda del Explorador lo permite pero es demasiado lenta. ¿Hay consejos grep aquí?
search
grep
windows-search
repartidor de hielo
fuente
fuente
Respuestas:
fuente
Tanto en Linux como en Windows, puede usar Acrobat Reader, que tiene un comando para buscar múltiples archivos.
En Linux, hay Recoll, que creará un índice de sus archivos pdf (y más) la primera vez que lo ejecute. Una vez creado el índice, las búsquedas de palabras deben ser muy rápidas; Las búsquedas de frases deben ser razonables. Asegúrese de que el
pdftotext
comando esté instalado antes de iniciar Recoll; bajo Debian y Ubuntu, está en elpoppler-utils
paquete, no sé sobre Suse.O bien, puede convertir directamente los archivos a texto y usar grep en los archivos de texto con los siguientes comandos.
fuente
pdftotext
(que herramientas como Recoll harán automáticamente).Adobe Reader X hace el trabajo y lo hace permitir la búsqueda debajo de todo un directorio y subdirectorios, no sólo dentro de un archivo, pero no es un programa de línea de comandos.
fuente
recoll
instalado en Debian fácilmente, ahora tratando de hacerlo utilizable para mis empleados basados en Windows.Para enumerar recursivamente todos los archivos en su directorio de inicio que tienen la extensión de archivo PDF y que contienen una línea que coincide con la expresión regular '
[iI]n Haskell
', por ejemplo, puede emitir:Observaciones:
-exec
oxargs
porque, por razones de seguridad , creo que es una buena práctica adquirir el hábito de hacerlo. Cambiar '-execdir
' a '-exec
' y '$PWD${0#?}
' a '$0
' debería lograr el mismo resultado en esta instancia../
'). En este ejemplo, las rutas coincidentes son todas absolutas (es decir, comienzan con '/
') porque '~/
' se expande a la ruta absoluta del directorio de inicio del usuario actual, y es el único argumento de ruta.$0
' y el '$1
' son parámetros posicionales que se utilizan para citar correctamente los argumentos. Si esto no se hace correctamente, el comando es vulnerable a nombres de archivo arbitrarios.${0#?}
' elimina el primer carácter de$0
, es decir, el '.
'.Para imprimir cada línea coincidente, proceda por el nombre del archivo:
Esta variante usa '
-H
' en lugar de '-l
' y etiquetas con nombre de archivo en lugar de ruta de archivo. '${0:2}
' quita los dos primeros caracteres de$0
, es decir, el './
', pero aparentemente no es reconocido porsh
.Por supuesto, ajusta tus necesidades.
fuente