Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Нумерация на bash из нескольких цифр  (Прочитано 2357 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Stoned Astronaut

  • Автор темы
  • Новичок
  • *
  • Сообщений: 7
  • "Если харакири, то кривым мечом"
    • Просмотр профиля
    • metalive
Есть некоторое кол-во папок с файлами ( фото, видео разного формата ).
Необходимо переименовать файлы *.jpg в следующий вид: "nikon_00001.jpg".
Для этого написал скрипт на bash ( специально не прибегал к помощи разного софта ):
(Нажмите, чтобы показать/скрыть)

Вопрос: как сделать нолики впереди, что-бы не нарушалось название файла "nikon_xxxxx.jpg", из пяти символов после "nikon_"?
Подскажите пожалуйста.

Оффлайн Self-Perfection

  • Активист
  • *
  • Сообщений: 331
  • Arch linux, KDE
    • Просмотр профиля
Re: Нумерация на bash из нескольких цифр
« Ответ #1 : 22 Июля 2013, 03:25:41 »
Порядок файлов, в котором их возвращает find, неспецифецирован, так что что занумеровать файлы ваш скрипт может весьма странным образом.
И, сдаётся мне, в таком варианте ваш скрипт сломается, если в пути к фото есть пробелы.

Отвечая на ваш вопрос:
Замените строку с mv на
Код: (bash) [Выделить]
DESTINATION=$(printf '%s/%s_%05d' "$dir" "$p" $s)
mv "$i" "$DESTINATION"
Читайте документацию, наставницу вашу!
Памятка по описанию проблем:
Для решения [такой-то задачи] делаю [такие-то действия], но вместо [ожидаемый результат] получаю [описание отличий].

Оффлайн Stoned Astronaut

  • Автор темы
  • Новичок
  • *
  • Сообщений: 7
  • "Если харакири, то кривым мечом"
    • Просмотр профиля
    • metalive
Re: Нумерация на bash из нескольких цифр
« Ответ #2 : 22 Июля 2013, 19:41:53 »
Порядок файлов, в котором их возвращает find, неспецифецирован, так что что занумеровать файлы ваш скрипт может весьма странным образом.
И, сдаётся мне, в таком варианте ваш скрипт сломается, если в пути к фото есть пробелы.

Отвечая на ваш вопрос:
Замените строку с mv на
Код: (bash) [Выделить]
DESTINATION=$(printf '%s/%s_%05d' "$dir" "$p" $s)
mv "$i" "$DESTINATION"


Спасибо за помощь. Всё работает. А на счёт пробелов я не стал ничего предпринимать, т.к. их 100% нет.

А на счёт странного переименования, можно добавить поиск по дате, не так ли ?

Пользователь решил продолжить мысль 22 Июля 2013, 20:34:15:

Собственно немного погуглив,я нашёл ответ на свой вопрос:
пивожу цикл for к следующему виду
(Нажмите, чтобы показать/скрыть)
И получаем в итоге скрипт вида
(Нажмите, чтобы показать/скрыть)
В итоге получил скрипт ищущий файлы рекурсивно, сортирующий по дате и переименовывающий найденое по порядку, используя префикс из нулей, но сохраняющий фиксированое колиество символов не зависимо от увеличения номера файла.
Спасибо за внимание.
« Последнее редактирование: 22 Июля 2013, 20:37:44 от Stoned Astronaut »

 

Страница сгенерирована за 0.086 секунд. Запросов: 25.