wget: загруженное имя файла - PullRequest
17 голосов
/ 20 декабря 2011

Я пишу скрипт для 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]

Ответы [ 8 ]

36 голосов
/ 14 января 2013
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 не всегда правильно.

30 голосов
/ 20 декабря 2011

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

url=http://pics.sitename.com/images/191211/mxKL17DdgUhcr.jpg
filename=$(basename "$url")
wget "$url"
16 голосов
/ 20 декабря 2011

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

wget -O myfile.html http://www.example.com/
3 голосов
/ 20 декабря 2011

Вы можете четко указать имя:

url='http://pics.sitename.com/images/191211/mxKL17DdgUhcr.jpg'
file=`basename "$url"`
wget "$url" -O "$file"
2 голосов
/ 07 июня 2013

Для обработки 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}
1 голос
/ 20 декабря 2011
~ $ 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'
0 голосов
/ 20 декабря 2011

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

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

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 ;;

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

0 голосов
/ 20 декабря 2011

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

echo ${url##*/}
...