Как заставить lynx распознавать пробелы в именах файлов

Как заставить lynx распознавать пробелы в именах файлов

Я использую скрипт для поиска списка всех файлов .pdf по URL. Но у lynx, похоже, есть проблема с пробелами в именах файлов. Вот скрипт:

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

Это работает, как и ожидалось, пока в имени файла нет .pdf с пробелами. Lynx, похоже, обрезает имя файла по пробелам. Есть ли способ предотвратить это?

решение1

awk (по умолчанию) использует пробелы в качестве разделителей полей, а lynx отображает пробел в сброшенном URL как пробел. Обойдите это, как я предложил в отчете об ошибке:

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

Если содержимое находится в кодировке UTF-8, lynxнеэскейпытекст (отменяет URL-кодирование, например%20), в данном случае показывая пробел (что делает два или более полей для awk, в зависимости от количества пробелов в имени).

Это снятие экранирования было сделано для Debian#398274, в 2013 году (т. е. эта функция появилась в Ubuntu 18.04).

Добавление-listonlyопция уменьшает количество неправильных совпадений, просматривая толькосписокURL-адресов.

Если вы хотите найти несколько типов файлов, вы можете перечислить суффиксы в качестве альтернатив в регулярном выражении, например, так:

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

Связанный контент