
Я использую скрипт для поиска списка всех файлов .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