7

У меня есть куча фотографий с разными именами.
Я хочу дать каждой фотографии случайное имя (*), как мне это сделать?

(*) Я собираюсь поставить их на цифровую фоторамку, которая не может перемешать

4 ответа4

8

Если у вас есть удобная оболочка 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
6

Предполагая, что все изображения находятся в одной папке, это будет работать в powershell:

Get-ChildItem *.jpg | ForEach-Object{Rename-Item $_ -NewName "$(Get-Random)-$($_.Name).jpg"}

Возможно, что вы получите потенциальные конфликты имен, но Get-Random по умолчанию возвращает 32-битное беззнаковое целое число от 0 до Int32.MaxValue (от 0 до 2147483647). Вы можете, конечно, добавить еще один Get-Random, чтобы уменьшить вероятность столкновения, как в ответе Bash.

4

for f in *; do ext=$(echo "$f" | sed 's|\([^.]*\)||'); mv "$f" "$(uuidgen)$ext"; done

-1

Большинство переименователей пакетных файлов могут сделать это, вот один

Простым способом будет сделать последовательную нумерацию файла, я уверен, что есть другие варианты с этим программным обеспечением, используйте свое воображение.

Вот тот, который я использую для массового переименования задач

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .