renomeia arquivos aleatoriamente em um dispositivo USB

3

Gostaria de renomear aleatoriamente todos os meus arquivos do meu dispositivo USB. De fato, no meu carro, meu sintonizador não tem a função aleatória.

Eu acho que posso fazer isso com PHP ... mas eu tenho certeza que é possível fazer algo mais curto no shell script, certo?

Uma ideia?

    
por Raphaël 21.08.2012 / 10:17

2 respostas

2

Supondo que você esteja executando o Linux, você deseja ordenar aleatoriamente todos os arquivos no diretório atual e que nenhum nome de arquivo contenha uma nova linha:

printf '%s\n' * | shuf | nl -n rz -s - |
while IFS= read -r name; do
  mv -- "${name#*-}" "$name"
done

O comando printf imprime os nomes dos arquivos, um por linha. shuf aplica uma permutação aleatória às linhas de entrada. nl adiciona prefixos como 000001- , 000002- , etc. a cada linha. O loop while itera em todas as linhas. O comando mv renomeia foo.mp3 para 000001-foo.mp3 , etc.

    
por 22.08.2012 / 02:01
3

Você pode adicionar um número aleatório de largura igual como prefixo, é o que estou fazendo para randomizar meus arquivos de áudio:

for i in *; do mv "$i" "$(seq -w 0 999 | shuf -n 1)_$i"; done
    
por 21.08.2012 / 10:26