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

Wget: имя загруженного файла

Я пишу script для bash, и мне нужно получить имя загруженного файла с помощью wget и поместить его в $string

например, если я загружаю этот файл ниже, я хочу поместить его имя mxKL17DdgUhcr.jpg в строку $string

wget http://pics.sitename.com/images/191211/mxKL17DdgUhcr.jpg
45439 (44K) [image/jpeg]
Saving to: «mxKL17DdgUhcr.jpg»

100%[===================================================================================================>] 45 439      --.-K/s   в 0s

2011-12-20 12:25:33 (388 MB/s) - «mxKL17DdgUhcr.jpg» saved [45439/45439]
4b9b3361

Ответ 1

Используйте команду basename, чтобы извлечь имя файла из URL-адреса. Например:

url=http://pics.sitename.com/images/191211/mxKL17DdgUhcr.jpg
filename=$(basename "$url")
wget "$url"

Ответ 2

wget --server-response -q -O - "https://very.long/url/here" 2>&1 | 
  grep "Content-Disposition:" | tail -1 | 
  awk 'match($0, /filename=(.+)/, f){ print f[1] }' )

Это правильная версия, так как может быть несколько перенаправлений 301/302 и, наконец, заголовок Content-Disposition: для установки имени файла

Удовлетворение имени файла на основе URL-адреса не всегда корректно.

Ответ 3

Вы можете просто указать имя файла перед загрузкой, с опцией -O на wget:

wget -O myfile.html http://www.example.com/

Ответ 4

Вы можете явно указать имя, подобное этому:

url='http://pics.sitename.com/images/191211/mxKL17DdgUhcr.jpg'
file=`basename "$url"`
wget "$url" -O "$file"

Ответ 5

Для обработки имен файлов с кодировкой URL:

URL="http://www.example.com/ESTAD%C3%8DSTICA(2012).pdf"
BASE=$(basename ${URL})             # ESTAD%C3%8DSTICA(2012).pdf
FILE=$(printf '%b' ${BASE//%/\\x})  # ESTADÍSTICA(2012).pdf
wget ${URL}

Ответ 6

~ $ URL='http://pics.sitename.com/images/191211/mxKL17DdgUhcr.jpg'
~ $ echo ${URL##*/}
mxKL17DdgUhcr.jpg
~ $ wget $URL -O ${URL##*/}
--18:34:26--  http://pics.sitename.com/images/191211/mxKL17DdgUhcr.jpg
           => `mxKL17DdgUhcr.jpg'

Ответ 7

Я думаю, у вас уже есть полный URL-адрес файла где-нибудь в переменной? Используйте расширение bash для префикса:

echo ${url##*/}

Ответ 8

альтернатива @Gowtham Gopalakrishnan ответа это просто

wget --server-response -q "https://very.long/url/here" 2>&1 | awk -F"filename=" '{if ($2) print $2}'

который просто выводит имя файла, который установлен в расположении содержимого

пример

$ wget --server-response -q https://hostname/filename-that-i-liek.zip 2>&1 | awk -F"filename=" '{if ($2) print $2}'
"filename-that-i-liek.zip"
$

Ответ 9

Итак, вы хотите указать имя файла/изображения в качестве параметра

попробуйте это

echo -n "Give me the name of file in http://pics.sitename.com/images/191211/ :"

read $string

sudo wget http://pics.sitename.com/images/191211/$string ;;

Я думаю, это может помочь вам