如何在多个文件和多个文件中的12个日历月中运行时间戳?

时间:2017-09-22 13:08:56

标签: linux bash shell unix sh

我想创建一个包含以下文件的目录:

test1 test2 test3 ... test4X;其中X是小于20的任何数字

我尝试使用touch命令更新文件的时间戳(日期/时间),并使时间戳在多年和12个日历月内运行。

示例:test1将于2011年1月; test2将于2014年2月;等

以下是我的脚本,但我无法在多年和12个日历月内随机化时间戳。

#!/bin/bash
clear
touch -d 2011-01-01 file{1..10}
ls -lt

Output:
-rw-r--r-- 1 Domain Users  0 Jan  1  2011 file10
-rw-r--r-- 1 Domain Users  0 Jan  1  2011 file1
-rw-r--r-- 1 Domain Users  0 Jan  1  2011 file2
-rw-r--r-- 1 Domain Users  0 Jan  1  2011 file3
-rw-r--r-- 1 Domain Users  0 Jan  1  2011 file4
-rw-r--r-- 1 Domain Users  0 Jan  1  2011 file5
-rw-r--r-- 1 Domain Users  0 Jan  1  2011 file6
-rw-r--r-- 1 Domain Users  0 Jan  1  2011 file7
-rw-r--r-- 1 Domain Users  0 Jan  1  2011 file8
-rw-r--r-- 1 Domain Users  0 Jan  1  2011 file9

2 个答案:

答案 0 :(得分:0)

不确定您的完整要求,但如果您希望将开始年份的值设置为您希望的结束年份值(直到您希望获得文件的修改时间),同样的事情也会有几个月,那么以下内容可能对您有所帮助相同。

awk -v var=19 -v start_year="2011" -v end_year="2015" -v start_month="1" -v end_month="12" '
BEGIN{
  while((4 * var)>val){
     print "touch -d " start_year"-"start_month"-1 file"++val;
     if(start_year==end_year){
       start_year="2011"
}
  if(start_month==end_month){
     start_month="1"
}
  start_year++;
  start_month++
}
}'

以上代码仅打印命令,例如 - > touch -d 2013-1-1 file75,所以打印它们,一旦你对结果感到满意,那么在命令的最后一个处使用| sh,然后执行这些touch命令。

答案 1 :(得分:0)

出现问题的地方是使用序列表达式来创建file{1..10}。虽然没问题,但您不能使用另一个序列表达式来操作touch日期字符串,而不会为每个文件名创建多个日期变体。

这是一个循环(或简单地使用RANDOM或两者)可以用来操纵日期字符串,为您提供多年和几个月的日期戳。

例如,要创建file_1 -- file_1020072016以及随机月份(Jan. - Dec.),您可以执行类似于我在评论,例如

for i in {2007..2016}; do   ## for years 2007 - 2016
    ## create a file with a random month
    touch -d "${i}-$((RANDOM % 12 + 1))-01" file_$((i-2006))
done

示例使用/输出

$ ls -lrt
total 0
-rw-r--r-- 1 david david 0 Mar  1  2007 file_1
-rw-r--r-- 1 david david 0 Dec  1  2008 file_2
-rw-r--r-- 1 david david 0 Oct  1  2009 file_3
-rw-r--r-- 1 david david 0 Mar  1  2010 file_4
-rw-r--r-- 1 david david 0 Jan  1  2011 file_5
-rw-r--r-- 1 david david 0 Aug  1  2012 file_6
-rw-r--r-- 1 david david 0 Mar  1  2013 file_7
-rw-r--r-- 1 david david 0 Mar  1  2014 file_8
-rw-r--r-- 1 david david 0 Jul  1  2015 file_9
-rw-r--r-- 1 david david 0 Dec  1  2016 file_10

仔细看看,如果您有其他问题,请告诉我。