Como fazer com que o lynx reconheça espaços em branco em nomes de arquivos

0

Estou usando um script para encontrar uma lista de todos os arquivos .pdf em um URL. Mas o lynx parece ter um problema com espaços em nomes de arquivos. Aqui está o script:

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

Isso funciona como esperado até que haja um .pdf com espaço em branco no nome do arquivo. O Lynx parece truncar o nome do arquivo no espaço em branco. Existe alguma maneira de evitar isso?

    
por Linter 28.08.2018 / 14:53

1 resposta

3

awk (por padrão) usa espaços em branco como separadores de campo, e lynx está renderizando um espaço em branco em um url despejado como um espaço em branco. Contornar isso como sugeri em um relatório de bug:

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

Se o conteúdo estiver na codificação UTF-8, o lynx cancela o texto (desfaz a codificação de URL, como %20 ), mostrando um espaço em branco neste case (fazendo com que dois ou mais campos para awk, dependendo do número de espaços em branco no nome).

Esse escape foi feito para o Debian # 398274 , em 2013 (ou seja, você tenho esse recurso com o Ubuntu 18.04).

A adição da opção -listonly reduz o número de correspondências incorretas, procurando apenas na lista de URLs.

Se você quisesse pesquisar vários tipos de arquivo, poderia listar os sufixos como alternativas na expressão regular, por exemplo, algo assim:

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

Tags