BASH:如何最好地过滤文件名中特定日期范围的文件目录?

BASH:如何最好地过滤文件名中特定日期范围的文件目录?

这是图片...

日期格式:Y%m%d%H%M%S% 这是我的文件名格式:file_sub1_20110501000000.txt
目录结构:

dir/  
  sub1/  
    file_sub1_20110501003000.txt  
    file_sub1_20110501010000.txt  
    file_sub1_20110501013000.txt  
    file_sub1_20110501020000.txt  
    --more--  
  sub2/  
    file_sub2_20110501003000.txt  
    file_sub2_20110501010000.txt  
    file_sub2_20110501013000.txt  
    file_sub2_20110501020000.txt  
    --more--  
  --more--/  
    --more--.txt  

我的问题是如何有效地过滤掉范围内的文件名
($file_date <= $cur_date && $file_date >= $prev_date)

我原本想循环遍历每个文件,同时比较日期是否在范围内,但是当我处理数千个文件时,我发现这种方法太慢了。

有没有更快的方法呢?

谢谢!

答案1

您应该能够使用以下命令列出文件名中包含今天或昨天日期的所有文件:

find . -iname "*`date +%Y%m%d`*" -or -iname "*`date -v -d1 +%Y%m%d`*"

运行此命令dir/将递归遍历所有子目录。

相关内容