Подстановочный знак в URL-адресе при использовании wget - PullRequest
0 голосов
/ 04 августа 2020

Я пытаюсь скопировать весь файл из S3 в HDFS через оболочку, используя следующую команду wild:

wget https://export.xyz.com/Disabilities/*/*/*/*_0620.csv.zip 

Я получаю сообщение об ошибке: ОШИБКА 404: не найдено Когда я использую URL-адрес одного указанного c файла, который можно скопировать.

Пожалуйста, дайте мне знать, как я могу использовать подстановочный знак в URL-адресе.

1 Ответ

1 голос
/ 11 августа 2020

Вы не можете. Использование подстановочных знаков применимо только тогда, когда все возможности уже известны:

  • В оболочке операционная система уже знает все файлы каталога: выдача ls *.log работает только потому, что это может быть сопоставлено со всеми именами файлов, которые
  • В SQL СУБД уже знает все столбцы таблиц и все строки данных таблиц: выдача SELECT * FROM people WHERE name LIKE '%Rogers' работает только потому, что все имена столбцов таблицы уже доступны, и потому что фильтр может быть сопоставлен с все существующие строки.
  • В регулярном выражении обрабатываемый текст - это уже все, что нужно знать: поиск p+ работает только потому, что его части могут быть сопоставлены, например, opposing forces.

Единый указатель ресурса (URL) никогда не может иметь подстановочных знаков, потому что тогда он больше не будет унифицированным. Как WGET (или любой другой HTTP-клиент) должен знать, какие возможности могут быть заполнены потенциальным заполнителем с подстановочными знаками? Не говоря уже о том, что * означает подстановочный знак, а не буквальную часть URI? Вы в основном спрашиваете, «какие URL-адреса существуют в inte rnet», и мне интересно, какой ответ вы ожидаете.

Вы должны придумать все перестановки сами , то есть список из всех URL-адресов, которые WGET может затем обработать:

https://export.xyz/Disabilities/NY/NYC/0620/file_0620.csv.zip
https://export.xyz/Disabilities/NY/NYC/0720/file_0620.csv.zip
https://export.xyz/Disabilities/NY/NYC/0820/file_0620.csv.zip

Вне всяких сомнений, этот список может быть очень большим и содержать URL-адреса, которые действительно не существуют (и, по логике, никогда не будут), поскольку он просто будет выглядеть как Тогда HTTP-статус 404 - все, что вы потратите, - это крошечный бит трафика c и времени.

...