
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-listonly
opçã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