У меня есть куча фотографий с разными именами.
Я хочу дать каждой фотографии случайное имя (*), как мне это сделать?
(*) Я собираюсь поставить их на цифровую фоторамку, которая не может перемешать
У меня есть куча фотографий с разными именами.
Я хочу дать каждой фотографии случайное имя (*), как мне это сделать?
(*) Я собираюсь поставить их на цифровую фоторамку, которая не может перемешать
Если у вас есть удобная оболочка bash, можно использовать переменную окружения $RANDOM
. Он генерирует случайные значения от 0 до 32767.
Простой цикл for в bash отлично работает, если у вас всего несколько сотен файлов.
for i in *.jpg; do mv -i "$i" ${RANDOM}.jpg; done
Поскольку у меня было около 4000 файлов для переименования, я вскоре получил коллизии, которые перехватил флаг -i
для mv
.
Добавление еще $RANDOM
позаботилось об этом.
for i in *.jpg; do mv -i "$i" ${RANDOM}${RANDOM}.jpg; done
Предполагая, что все изображения находятся в одной папке, это будет работать в powershell:
Get-ChildItem *.jpg | ForEach-Object{Rename-Item $_ -NewName "$(Get-Random)-$($_.Name).jpg"}
Возможно, что вы получите потенциальные конфликты имен, но Get-Random по умолчанию возвращает 32-битное беззнаковое целое число от 0 до Int32.MaxValue (от 0 до 2147483647). Вы можете, конечно, добавить еще один Get-Random, чтобы уменьшить вероятность столкновения, как в ответе Bash.
for f in *; do ext=$(echo "$f" | sed 's|\([^.]*\)||'); mv "$f" "$(uuidgen)$ext"; done
Большинство переименователей пакетных файлов могут сделать это, вот один
Простым способом будет сделать последовательную нумерацию файла, я уверен, что есть другие варианты с этим программным обеспечением, используйте свое воображение.
Вот тот, который я использую для массового переименования задач