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

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

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

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

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

Responder1

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

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

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

Essa remoção foi feita para o Debian#398274, em 2013 (ou seja, você tem esse recurso com o Ubuntu 18.04).

Adicionando o-listonlyopção reduz o número de correspondências incorretas, olhando apenas para olistade URLs.

Se você quiser procurar vários tipos de arquivos, poderá listar os sufixos como alternativas na expressão regular, por exemplo, algo assim:

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

informação relacionada