Wget переименовать с оригинальным именем - PullRequest
0 голосов
/ 18 января 2019

Я использую скрипт bash для запуска чего-то вроде ниже

for i in {1..50}; 
do  
    wget --content-disposition `http://example.com/getfile.php?id={$i}`
done

тогда я могу получить файлы

abc.mp3
abc.jpg
abc.png
...

но я хочу расширить идентификатор для файлов вроде

1-abc.mp3
2-abc.jpg
3-abc.png
...

Можно ли использовать wget -o переименовать файл в {$i}-{$orignalName.orignalExtention}

Ответы [ 2 ]

0 голосов
/ 18 января 2019

wget не поддерживает шаблон / шаблон в опции -O (заглавная буква O, BTW). Таким образом, вы можете сделать несколько хитростей, например сначала поместить файл во временный каталог, а затем переименовать его с помощью оболочки. Что-то вроде:

for i in {1..50}; 
do  
    mkdir $i && cd $i && \
    wget --content-disposition `http://example.com/getfile.php?id={$i}` && \
    for fn in *; do mv "$fn" "../$i-$fn" && cd .. && rmdir $i; done
done

Примечание: не проверено.

0 голосов
/ 18 января 2019

Сначала вы должны использовать HTTP-вызов HEAD для получения originalName, например, с:

  • -S --spider --content-disposition варианты с wget
  • -I -L опции с cURL

Например:

originalFileName=$( wget --content-disposition -S --spider "http://example.com/getfile.php?id={$i}" |& grep "Content-Disposition" |sed -e 's/^.*filename=//' )

Затем просто используйте опцию -O и создайте локальное имя файла с только что полученным originalName и i, который у вас уже есть.

С вашим скриптом это даст:

for i in {1..50}; 
do  
    originalFileName=$( wget --content-disposition -S --spider "http://example.com/getfile.php?id={$i}" |& grep "Content-Disposition" |sed -e 's/^.*filename=//' )
    wget `http://example.com/getfile.php?id={$i}` -O "$i-$originalFileName"
done
...