如何查找本周(不是过去7天)内修改的文件 - 本周除当前日期外?例如,如果今天是星期三,我们需要找到星期二和星期一的修改过的文件。
过去7天(目前不包括)我可以使用:
find . -name "name_pattern" -mtime +1 -mtime -7
但是,我不知道如何在本周的日子里这样做,而不仅仅是最后一天。
答案 0 :(得分:1)
也许这会有所帮助?
for i in {`date +"%u" -d "yesterday"`..1}; do
date +"%A" -d "$i days ago";
find . -mtime $i;
echo "";
done
输出:
Monday
Tuesday
./.file3
./.file2
Wednesday
Thursday
./.file1
./.file2
答案 1 :(得分:1)
对于Linux,我们可以创建带有时间戳的临时文件。 本周不包括当天,它将是:
touch -t $(date +"%Y%m%d0000" -d "last mon") ./fromfile
touch -t $(date +"%Y%m%d0000" -d "now") ./tofile
find . -name "pattern" -newer ./fromfile ! -newer ./tofile
rm ./fromfile ./tofile
在Solaris中,这可以通过一些额外的程序来完成,例如perl或python(Solaris中的date命令不会返回正确的答案):
perl -e 'use Time::Local; use POSIX strftime;
my $t=time();
while (strftime("%u",localtime($t)) != 1){ $t -=24*60*60; };
print strftime("%Y%m%d0000",localtime($t) ),"\n";'
此perl示例中的代码将与'date +“%Y%m%d0000”-d“last mon”'
相同答案 2 :(得分:0)
一旦这样做是为了获得自上次星期一以来的天数。使用date
命令:
echo $((($(date +%s) - $(date -d 'last mon' +%s))/60/60/24))
+%s
返回自EPOCH
时间以来的秒数。所以这个数字需要分成几天来。
然后您可以将其添加到您的命令中:
find . -name "name_pattern" -mtime +1 -mtime -$((($(date +%s) - $(date -d 'last mon' +%s))/60/60/24))