https://pp.vk.me/c307313/v307313650/1e94/bj560KCwYY4.jpg https://pp.vk.me/c307313/v307313650/1692/yFPMOuXHLvw.jpg ... https://pp.vk.me/c307313/v307313650/1e7b/d-MXTKSZr34.jpg https://pp.vk.me/c307313/v307313650/1e84/Oj_DhH9Fbvw.jpg
Собственно, после скачивания wget'ом (wget -i listfile.txt) я получил неудобоваримый набор файлов с рандомными названиями, и мне захотелось переименовать их в вид 001.jpg 002.jpg, согласно порядку, в котором они были в исходном файле. Хорошенько попотев, получил такой однострочник:
cat ./listfile.txt | tr -d '\r' | while read url; do n=$((n+1)); file="`echo $url| sed -e 's/.*\///'`"; newfile="`printf \"%03d\" $n`"; mv ./"$file" ./"$newfile".jpg ; done |
Или, для читаемости, так:
cat ./listfile.txt | tr -d '\r' | while read url; do n=$((n+1)); file="`echo $url| sed -e 's/.*\///'`"; newfile="`printf \"%03d\" $n`"; mv ./"$file" ./"$newfile".jpg ; 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).
file="`echo $url| sed -e 's/.*\///'`" - старое имя файла, которое получается путем обрезания левой части ссылки
newfile="`printf \"%03d\" $n`" - новое имя файла, которое состоит из переменной n сформатированной в трехсимвольное отображение (1,2,3 -> 001, 002, 003).
Комментариев нет:
Отправить комментарий