Как сохранить файлы с помощью wget в пронумерованные файлы с ведущими нулями? - PullRequest
1 голос
/ 14 декабря 2011

Я пытаюсь загрузить список файлов .jpg с помощью wget.Имена файлов на сервере - это все случайные буквенно-цифровые строки;Я хочу сохранить их в новых, пронумерованных именах файлов, например, 000.jpg, 001.jpg и т. Д. В соответствии с порядком их перечисления во входном файле.

Проблема, с которой я столкнулся, заключается вчто BASH удаляет ведущие нули, поэтому я получаю 000.jpg, 1.jpg и т. д.

Вот мой сценарий:

picnum=000
for i in `cat $imglist`; do
    wget -O $picnum.jpg $i
    let picnum++
done

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

Ответы [ 2 ]

3 голосов
/ 14 декабря 2011

Вам нужно набрать ноль свой номер. Попробуйте это:

wget -O `printf "%03d" $picnum`.jpg $i
1 голос
/ 14 декабря 2011

Вы не должны использовать для меня в cat. В вашем примере это может сработать, но вы должны использовать чтение из цикла while для итерации строк в файле. Смотрите эту ссылку для получения дополнительной информации: http://mywiki.wooledge.org/BashFAQ/001.

Вы можете использовать printf, чтобы дополнить свой номер нулями.

picnum=0
while read -r image; do
    wget -O $(printf '%03d.jpg' "$picnum") "$image"
    (( picnum++ ))
done < "$imglist"
...