O primeiro desafio é gerar uma data aleatória. Aqui está o que eu inventei.
date -d @$(shuf -i "0-$(date +%s)" -n 1) +%Y%m%d%H%M.%S
Trabalhando de dentro para fora:
-
date +%s
obtém a data atual como um timestring Unix (segundos no Epoc, desde 1970) -
shuf
usa isso como um limite superior para um número aleatório de 0 -
date
converte isso de volta em algo que podemos usar.
Depois, há a configuração do mtime em um arquivo. Felizmente, touch
torna isso realmente simples:
touch -mt <[[CC]YY]MMDDhhmm[.ss]> <filename>
Então, precisamos apenas fazer o loop dos arquivos e encadear esses dois:
find -type f -exec sh -c 'touch -m -t $(date -d @$(shuf -i "0-$(date +%s)" -n 1) +%Y%m%d%H%M.%S) "{}"' \;
Há um pouco de preenchimento para impedir que a data seja gerada aleatoriamente fora do loop, mas isso funciona:
$ ls -l
total 0
-rw-rw-r-- 1 oli oli 0 Jan 4 2012 1
-rw-rw-r-- 1 oli oli 0 Jan 28 2009 2
-rw-rw-r-- 1 oli oli 0 Jun 8 1984 3