Подтвердить что ты не робот

Как загрузить файл в каталог с помощью curl или wget?

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

curl -O example.com/file.zip
wget example.com/file.zip

Но я хочу, чтобы они вошли в конкретный каталог. Поэтому я могу сделать следующее:

curl -o mydir/file.zip example.com/file.zip
wget -O mydir/file.zip example.com/file.zip

Есть ли способ указать имя файла? Что-то вроде этого:

curl -dir mydir example.com/file.zip
4b9b3361

Ответ 1

Следующая строка загрузит все файлы в указанную вами директорию.

wget -P /home/test www.xyz.com

Здесь файлы будут загружены в каталог /home/test

Ответ 2

Я знаю, что это старый вопрос, но можно сделать то, что вы просите с помощью curl

rm directory/somefile.zip
rmdir directory
mkdir directory
curl --http1.1 http://example.com/somefile.zip --output directory/somefile.zip

сначала, если это было написано сценарием, вам нужно убедиться, что файл, если он уже существует, удаляется, а затем удаляет каталог, а затем завертывает загрузку, иначе завиток завершится с ошибкой файла и каталога.

Ответ 3

Самый простой способ - cd внутри подоболочки

  (cd somedir; wget example.com/file.zip)

и вы можете сделать эту функцию оболочки (например, в ~/.bashrc)

  wgetinside() {
    ( cd $1 ; shift; wget $* )
  }

затем введите wgetinside somedir http://example.com/file.zip

Ответ 4

Короткий ответ не такой, как curl, и wget автоматически записывает в STDOUT. У него нет возможности встроить файл загрузки в каталог.

-o/--output <file> Write output to <file> instead of stdout (Curl)

-O,  --output-document=FILE    write documents to FILE. (WGet)

Но поскольку он выводит на STDOUT изначально, он дает вам программные решения, такие как:

 i="YOURURL"; f=$(awk -F'/' '{print $NF}' <<< $i);curl $i > ~/$f

Сначала я определяю ваш url (example.com/file.zip) как переменную. F = часть удалила URL-адрес и ушла /file.zip, а затем вы скручиваете этот файл ($ i) в каталог (~) в качестве имени файла.