У меня есть тонны файлов, все названные вещи , как 1.jpg
, 2.jpg
, 3.jpg
и так далее до 1439.jpg
, однако, у меня есть проблема с одним из моих проектов и в алфавитном порядке. Это, как правило , идут в том порядке 1.jpg
, 10.jpg
, 11.jpg
и так далее.
Мне нужен какой-то способ присвоения имен файлам, чтобы они были в таком формате, как 00001.jpg
все до 01439.jpg
.
Как я смогу сделать это быстро и эффективно?
scripts
batch-rename
Каз Вулф
источник
источник
ls -v
unix.stackexchange.com/questions/33909/…pyrenamer
.Ответы:
Ubuntu поставляется со скриптом под названием
rename
. Это всего лишь небольшой Perl-скрипт, который имеет ряд мощных функций массового переименования, но лучшей (в данном случае) является возможность запуска Perl во время замены. Результатом является действительно компактное решение:Это похоже на
printf
ответы в другом стиле, но это все для нас. Код выше для 5-значного числа (включая переменное число ведущих нулей).Он будет искать и заменять первую найденную числовую строку на версию с нулевым дополнением и оставит остальную часть имени файла в покое. Это означает, что вам не нужно слишком беспокоиться о переносе какого-либо расширения или префикса.
Примечание: это не полностью переносимо. Многие дистрибутивы используют
rename.ul
изutil-linux
пакета в качествеrename
бинарного файла по умолчанию . Это значительно замедленная альтернатива (см.man rename.ul
), Которая не поймет вышеизложенного. Если вам это нужно на платформе, которая не использует переименование Perl, сначала узнайте, как ее установить.А вот и тестовая подвеска:
И пример префиксов (мы не делаем ничего другого):
источник
sprintf
в Perl ведет себя аналогичноsprintf
другим языкам.редактировать
Объяснение:
if [[ $f =~ [0-9]+\. ]]
следит за тем, чтобы переименовывались только файлы с именами, состоящими из цифр (с точками).printf "%.5d" NUMBER
добавляет ведущие нули"${f%.*}"
вырезает расширение (.jpg) и оставляет только номер.jpg
после второго обратного удара снова добавляется расширение файла.Обратите внимание, что это будет работать только с именами файлов, которые являются числами. Отступ слева от нуля к ненумерованным файлам требует другого формата.
Если вы хотите поэкспериментировать, попробуйте эту команду:
Редактировать 2
Сделайте команду более безопасной, убедившись, что только имена файлов, которые являются числами, переименовываются. Обратите внимание, что любые ранее существующие файлы с именами, такими как 00001.jpg, будут перезаписаны.
источник
Ниже скрипт на питоне.
Скрипт добавляет начальные нули до определенного количества цифр. Если имя больше этого, файл (имя) остается без изменений.
Объединение различных расширений в одно действие переименования может добавить некоторое удобство. Чтобы добавить расширения, просто добавьте их, например, в кортеж
extensions = (".jpg", ".jpeg", ".tiff")
.Скопируйте текст в пустой файл, сохраните его как
rename.py
, введите правильный путь к каталогу файлов (sourcedir
), количество цифр, которые вы хотели бы иметь новыми именами (number_ofdigits
), и расширение (я) файлов для rename (extensions
)Запустите его командой:
Сценарий:
редактировать:
Ниже немного улучшенная версия. Он автоматически определяет самое длинное имя в каталоге и добавляет начальные нули вплоть до длины самого длинного имени.
пример:
будет выглядеть так:
Нет необходимости устанавливать количество цифр.
источник
В Perl реализована утилита переименования, которая делает это очень просто:
Первый аргумент - это выражение Perl, которое оценивается для каждого имени файла.
источник
Существует графический интерфейс, который будет делать это, называемый pyRenamer, который можно найти в репозиториях. Установите, запустите, выберите каталог и просто установите для параметра «Переименованный шаблон имени файла» значение «{num5}» на вкладке «Шаблоны» и нажмите кнопку «Переименовать». Вы также можете просмотреть, что произойдет до переименования.
источник
shell-scripting
раздел, то есть я ищу ответ из командной строки. Кроме того, можете ли вы предоставить более подробную информацию о программе? Например, какой формат шаблона{num5}
?Это грубо, так как он не делает переименование разумно, нужно подумать об этом для хитрости. Но это должно помочь вам разобраться.
Обновление: Ну, у вас есть более полный ответ.
источник