Como renomear em lote arquivos com nome aleatório

7

Eu tenho um monte de fotos com nomes variados. Eu quero dar a cada foto um nome aleatório (*) , como faço isso?

(*) Vou colocá-los em uma moldura digital que não pode ser reproduzida

    
por Nifle 30.06.2011 / 22:39

4 respostas

6

Supondo que todas as imagens estão em uma única pasta, isso funcionaria no powershell:

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

É possível que você obtenha colisões de nome em potencial, mas Get-Random por padrão retorna um int não assinado de 32 bits de 0 para Int32.MaxValue (0 a 2147483647). Você certamente poderia adicionar outro Get-Random para reduzir a probabilidade de uma colisão, assim como na resposta Bash.

    
por 30.06.2011 / 23:05
8

Uma maneira de ter um shell bash à mão é usar a variável de ambiente $RANDOM . Ele gera valores aleatórios entre 0 e 32767.

Um loop for simple no bash funciona bem se você tiver apenas algumas centenas de arquivos.

for i in *.jpg; do mv -i "$i" ${RANDOM}.jpg; done

Como eu tinha cerca de 4000 arquivos para renomear, logo tive colisões que o sinal -i to mv capturou. Adicionar outro $RANDOM cuidou disso.

for i in *.jpg; do mv -i "$i" ${RANDOM}${RANDOM}.jpg; done
    
por 30.06.2011 / 22:49
4

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

    
por 01.07.2011 / 04:09
0

A maioria dos renomers de arquivos em lote pode fazer isso, aqui está um

O método fácil seria fazer uma numeração seqüencial do arquivo, tenho certeza que existem outras opções com este software, use sua imaginação.

Aqui está o que eu uso para o volume renomeando tarefas

    
por 01.07.2011 / 02:21