@zapolya

Как создать жёсткую ссылку на файл?

Сценарий переименовывает Файлы PHOTO1.JPG в photo0001.jpg

#!bin/bash
rename ‘y/A-Z/a-z/‘ *.JPG
rename ‘s/photo/photo000/g’ *.jpg


Как сделать жёсткую ссылку на Файлы PHOTO1.JPG, PHOTO2.JPG... PHOTO123.JPG

Переименовывается криво, надо c PHOTO123.JPG получить photo0123.jpg, а выводит photo000123

Как это исправить ?
  • Вопрос задан
  • 163 просмотра
Решения вопроса 1
3vi1_0n3
@3vi1_0n3
#!/bin/bash

for fn in *.JPG
do
    fn_small=${fn,,}
    num=${fn_small//[a-z.]}
    mv $fn ${fn_small/$num/$(printf "%04d" $num)}
done
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
planc
@planc
ужас, зачем я это сделал...

генерим гору файлов для теста:
for i in $(seq 1 9999); do touch PHOTO$i\.JPG; done


#!/bin/bash

for fname in PHOTO*;
do
    number=$(echo $fname | sed -r 's/PHOTO([0-9]+)\.JPG/\1/');
    echo $fname - $number;
    case $number in
        ?)
            newname='photo000'$number.jpg
            ;;
        ??)
            newname='photo00'$number.jpg
            ;;
        ???)
            newname='photo0'$number.jpg
            ;;
        ????)
            newname='photo'$number.jpg
            ;;
    esac
    echo "old: $fname new: $newname";
    # mv $fname $newname
done
Ответ написан
Heizenberg
@Heizenberg
Тогда вот так
rename -e 's/\d+/sprintf("%04d",$&)/e' -- *.jpg
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы