Cómo hacer que Lynx reconozca los espacios en blanco en los nombres de archivos

Cómo hacer que Lynx reconozca los espacios en blanco en los nombres de archivos

Estoy usando una secuencia de comandos para encontrar una lista de todos los archivos .pdf en una URL. Pero Lynx parece tener problemas con los espacios en los nombres de archivos. Aquí está el guión:

lynx --dump http://www.somesite/here/ | awk '/http/{print $2} | grep pdf > ~/Desktop/links.txt

Esto funciona como se esperaba hasta que haya un .pdf con espacios en blanco en el nombre del archivo. Lynx parece truncar el nombre del archivo en el espacio en blanco. ¿Hay alguna manera de prevenir esto?

Respuesta1

awk (de forma predeterminada) usa espacios en blanco como separadores de campos, y lynx muestra un espacio en blanco en una URL volcada como un espacio en blanco. Solucionelo como sugerí en un informe de error:

lince -listonly -dump http://www.somesite/here/ | \
awk '/\.pdf$/{ sub("^[ ]*[0-9]+.[ ]*","",$0); imprimir}' > ~/Desktop/links.txt

Si el contenido está en codificación UTF-8, lynxno escapael texto (deshace la codificación de URL como%20), mostrando un espacio en blanco en este caso (lo que hace que dos o más campos para awk, dependiendo de la cantidad de espacios en blanco en el nombre).

Esa eliminación de escape se hizo para Debian#398274, en 2013 (es decir, tienes esa característica con Ubuntu 18.04).

Añadiendo el-listonlyLa opción reduce el número de coincidencias incorrectas, al mirar solo ellistade URL.

Si desea buscar varios tipos de archivos, puede enumerar los sufijos como alternativas en la expresión regular, por ejemplo, algo como esto:

awk '/\.(pdf|odt|doc|docx)$/{ sub("^[ ]*[0-9]+.[ ]*","",$0); imprimir}' > ~/Desktop/links.txt

información relacionada