Bash:如何查找本周修改的文件

Bash:如何查找本周修改的文件,bash,Bash,如何查找本周(不是最近7天)内修改的文件?本周不包括当天的文件?例如,如果今天是星期三,我们需要查找星期二和星期一的修改文件 在过去7天内(不包括当前),我可以使用: find . -name "name_pattern" -mtime +1 -mtime -7 但是,我不确定如何在当前一周的几天内完成此操作,而不仅仅是在最后一天。完成此操作的一种方法是获取自上周一以来的天数。为此使用date命令: echo $((($(date +%s) - $(date -d 'last mon' +%s

如何查找本周(不是最近7天)内修改的文件?本周不包括当天的文件?例如,如果今天是星期三,我们需要查找星期二和星期一的修改文件

在过去7天内(不包括当前),我可以使用:

find . -name "name_pattern" -mtime +1 -mtime -7

但是,我不确定如何在当前一周的几天内完成此操作,而不仅仅是在最后一天。

完成此操作的一种方法是获取自上周一以来的天数。为此使用
date
命令:

echo $((($(date +%s) - $(date -d 'last mon' +%s))/60/60/24))
+%s
返回自
纪元以来的秒数。因此,需要将数字除以天

然后可以将其添加到命令中:

find . -name "name_pattern" -mtime +1 -mtime -$((($(date +%s) - $(date -d 'last mon' +%s))/60/60/24))

一种方法是获取自上周一以来的天数。为此使用
date
命令:

echo $((($(date +%s) - $(date -d 'last mon' +%s))/60/60/24))
+%s
返回自
纪元以来的秒数。因此,需要将数字除以天

然后可以将其添加到命令中:

find . -name "name_pattern" -mtime +1 -mtime -$((($(date +%s) - $(date -d 'last mon' +%s))/60/60/24))
也许这会有帮助

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
也许这会有帮助

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

对于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示例中的代码与“date+%Y%m%d0000”-d“last mon”相同。

对于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示例中的代码将与“date+%Y%m%d0000”-d“last mon”相同。

这一个对我有用,谢谢。但是我没有使用我在这里使用的范围,这一个对我有用,谢谢。但是我没有使用范围,而是在这里使用while循环