文件的随机修改时间

文件的随机修改时间

我查了一下网络,了解了如何更改文件的修改时间,但之后它们的修改时间却相同,这不是我愿意的,我想要随机的时间,这样更安全,谁能告诉我怎么做?

答案1

第一个挑战是生成一个随机日期。以下是我想到的办法。

date -d @$(shuf -i "0-$(date +%s)" -n 1) +%Y%m%d%H%M.%S

从内到外进行工作:

  • date +%s获取当前日期作为 Unix 时间字符串(自 1970 年起,以 Epoc 为单位的秒数)
  • shuf使用它作为从 0 开始的随机数的上限
  • date将其转换回我们可以使用的东西。

然后是设置文件的修改时间。touch幸好真的简单的:

touch -mt <[[CC]YY]MMDDhhmm[.ss]> <filename>

所以我们只需要循环文件并将这两个链接在一起:

find -type f -exec sh -c 'touch -m -t $(date -d @$(shuf -i "0-$(date +%s)" -n 1) +%Y%m%d%H%M.%S) "{}"' \;

有一些填充可以阻止在循环外随机生成日期,但这确实有效:

$ 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

答案2

如果有人遇到这种情况,这个命令可以帮我设置从 1970 年 1 月 1 日到去年 12 月 28 日的随机日期:

touch -m -t $(date -d "$((RANDOM%$(($(date +"%Y") - 1970 - 1))+1970))-$((RANDOM%12+1))-$((RANDOM%28+1)) $((RANDOM%23+1)):$((RANDOM%59+1)):$((RANDOM%59+1))" '+%Y-%m-%d %H:%M:%S')

它并不完美(不会生成高于 28 或今年的日期的日期),但对于大多数情况来说应该足够好了。

灵感来自https://www.linuxquestions.org/questions/linux-newbie-8/random-date-generator-784598/

相关内容