
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-listonly
La 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