Bash脚本用于删除与特定日期模式不匹配的文件

时间:2014-08-07 14:12:00

标签: bash file date cron dayofweek

我有一个项目,我不确定处理它的最佳方法。

我有一台存储法庭录音的Linux服务器。我需要编写一个可以通过cron运行的脚本来自动删除给定文件夹中与以下模式不匹配的任何记录:

创建日期是第二个星期一,第二个星期二,第四个星期一或第四个星期二。

最近的一对(例如,从今天是2014年8月7日星期四,应该存在的唯一文件将是7月28日星期一和星期二29日)应该保留;应删除所有其他文件。

文件名使用以下标准:

CourtroomName_CourtroomNumber_Date(YYMMDD)_Time(HHMMSS)_FileNumber.mp3

我看到了类似的问题,但他们都只是通过时间戳或其他一些不可知的方法来处理最新的问题。我需要能够确定一周中的实际日期,月份的周数,并根据要保留的文件和要删除的文件来确定。

如有必要,我可以提供更多信息,请告诉我。

1 个答案:

答案 0 :(得分:0)

这个怎么样:

courtcheck() {
  local d=${1#*_}; d=${d#*_}; d=${d%_*}; d=${d%_*}
  local w=$(date -d"$d" +"%w")
  local n=$(((${d#????} - 1) / 7))
  #echo "$w, $n"
  [[ ($w == 1 || $w == 2) && ($n == 1 || $n == 3) ]]
  return $?
}

name="State_A_140807_105536_MZ001.mp3"
courtcheck "$name" && echo "$name"
name="State_A_140812_105536_MZ001.mp3"
courtcheck "$name" && echo "$name"