我想创建一个包含以下文件的目录:
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
答案 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_10
年2007
到2016
以及随机月份(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
仔细看看,如果您有其他问题,请告诉我。