Вытяните список файлов, заканчивающихся на .csv.gz, чтобы загрузить

Как я могу перейти на веб-сайт (который требует имя пользователя и пароль) и вытащить полную ссылку на сайт всех файлов, которые заканчиваются на .csv.gz, в файл .txt (по одной строке). Я не хочу извлекать данные из подпапок.

Например, я бы хотел, чтобы следующие файлы сохранялись в my.txt

http://www.google.com/1.csv.gz http://www.google.com/xyz.csv.gz 

Но он не должен сэкономить

 http://www.google.com/extra/abc.csv.gz 

  • Как подсчитать общее количество уникальных строк из файла с помощью linux
  • Использование ./ для запуска скомпилированного кода
  • Удаление файлов на основе даты, указанной в имени файла
  • Linux не показывает правильное имя hdd
  • индекс перед выходом «ip link» или «ip addr»
  • Загрузка приложения из rc.local в rhel6.4
  • Как получить информацию о памяти процесса из программы C?
  • Почему «измененная» дата не изменяется при изменении файла?
  • 2 Solutions collect form web for “Вытяните список файлов, заканчивающихся на .csv.gz, чтобы загрузить”

    С протоколом HTTP, в отличие от FTP и некоторых других протоколов, нет такой вещи, как «вытягивание» списка всех файлов. Если вы хотите получить ( GET ) файл, вы должны знать его URL.

    Многие веб-серверы предоставляют удобную функцию (часто называемую autoindex), которая для URL http://site/directory/ создает HTML-страницу, содержащую список ссылок на URL-адреса формы http://site/directory/file для каждый file который существует внутри этого каталога на сервере, следовательно, предоставляет своего рода список псевдофайлов, которые клиенты могут обнаружить. Однако эта функция почти никогда не используется для каталога верхнего уровня сайта ( http://site/ ), поскольку автор сайта обычно предоставляет явную HTML-страницу для URL-адреса верхнего уровня сайта. Поэтому, если http://www.google.com/1.csv.gz существует, вы, как правило, не сможете узнать об этом, если не знаете заранее, что он есть.

    Если вы имеете дело с веб-сервером, который предлагает вам индекс файлов, то вы можете легко перевести этот список из HTML в текст с помощью некоторой обработки текста с помощью awk или sed но это будет зависеть от точного формата, в котором конкретная сеть сервер возвращает свой HTML-список …

     curl http://site/ | sed -e [....] 

    Я предполагаю, что все файлы, которые вы хотите, перечислены на индексной странице веб-сайта. Если это так, вы можете использовать текстовый браузер, такой как lynx, чтобы сбросить список URL-адресов, найденных на этой странице, затем с помощью sed извлечь те, которые вы хотите. Например:

     lynx -auth=ID:PASSWD -dump http://www.google.com | sed '1,/^References/d \:www\.google\.com/[^/]*\.csv\.gz$:!d s/^ *[^ ]* // ' >my.txt 

    Команда sed удаляет (d) все строки до конца списка ссылок (то есть ссылок на URL) в конце. Затем он удаляет строки, не соответствующие вашему шаблону ( \: вводит новый разделитель шаблонов : вместо / мы можем использовать / в шаблоне без его эскалации). [^/]* соответствует любым символам, кроме / . $ – конец строки. Затем он удаляет нумерацию lynx для URL-адресов.

    Interesting Posts

    Размещение жесткого диска fstab

    Как изменить размер виртуального диска с установленной системой Linux?

    Сделайте вывод bash! = 0, вызванный AWK и прерванный с помощью ^ C

    Одно системное обслуживание зависит от другого

    Прозрачный прокси

    Автоматическое отключение от WLAN, если не используется

    Почему Sun NFS (Network File System) выбирает файловую систему для многих распределенных файловых систем?

    Съемка с веб-камерой с ноутбуком после ввода неправильного пароля

    (ubuntu 16.04) Как обнаружить независимое от устройства событие вставки USB

    Может ли rsync использоваться для возобновления передачи после других способов передачи / загрузки?

    Как найти все файлы?

    Расписание резервного копирования с уведомлением?

    несколько пользовательских типов / правил доступа для OpenVPN на CentOS 7 и firewalld

    Объединение частичных дубликатов

    эталонная проблема при использовании sed

    Linux и Unix - лучшая ОС в мире.