Как по порядку переименовать файлы, скачанные wget по списку

Исходные данные

Code: listfile.txt
  1. https://pp.vk.me/c307313/v307313650/1e94/bj560KCwYY4.jpg
  2. https://pp.vk.me/c307313/v307313650/1692/yFPMOuXHLvw.jpg
  3. ...
  4. https://pp.vk.me/c307313/v307313650/1e7b/d-MXTKSZr34.jpg
  5. https://pp.vk.me/c307313/v307313650/1e84/Oj_DhH9Fbvw.jpg

Решение

Скачиваем файлы wget'ом: wget -i listfile.txt

Переименовываем их в вид 001.jpg 002.jpg, согласно порядку, в котором они были в исходном файле.

Shell-Script
  1. cat ./listfile.txt | tr -d '\r' | while read url;
  2. do
  3. n=$((n+1));
  4. file="`echo $url| sed -e 's/.*\///'`";
  5. newfile="`printf \"%03d\" $n`";
  6. mv ./"$file" ./"$newfile".jpg ;
  7. done


Немного пояснений:


tr -d '\r' - исходный файл у меня был виндовосформирован, поэтому в каждой строке там был лишний символ перевода коретки, который мешался


while read url - стандартный цикл построчного чтения файла в переменную url


n=$((n+1)) - переменная n для нового имени файлов, которая будет прирастать на единицу


file="`echo $url| sed -e 's/.*\///'`" - старое имя файла, которое получается путем обрезания левой части ссылки


newfile="`printf \"%03d\" $n`" - новое имя файла, которое состоит из переменной n сформатированной в трехсимвольное отображение (1,2,3 -> 001, 002, 003).

    Comments