Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于删除与特定日期模式不匹配的文件的Bash脚本_Bash_File_Date_Cron_Dayofweek - Fatal编程技术网

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

用于删除与特定日期模式不匹配的文件的Bash脚本,bash,file,date,cron,dayofweek,Bash,File,Date,Cron,Dayofweek,我有一个项目,我不确定处理它的最佳方式 我有一个Linux服务器,可以存储法庭录音。我需要编写一个可以通过cron运行的脚本,以自动删除给定文件夹中与以下模式不匹配的任何录制: 创建日期为第二个星期一、第二个星期二、第四个星期一或第四个星期二 以最近的一对为例,因为今天是2014年8月7日星期四,所以应该存在的唯一文件应该是7月28日星期一和29日星期二的文件;应删除所有其他文件 文件名使用以下标准: CourtroomName_CourtroomNumber_Date(YYMMDD)_Time

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

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

创建日期为第二个星期一、第二个星期二、第四个星期一或第四个星期二

以最近的一对为例,因为今天是2014年8月7日星期四,所以应该存在的唯一文件应该是7月28日星期一和29日星期二的文件;应删除所有其他文件

文件名使用以下标准:

CourtroomName_CourtroomNumber_Date(YYMMDD)_Time(HHMMSS)_FileNumber.mp3
我看到过类似的问题,但它们都是通过时间戳或其他一些不可知的方式获取最新的。我需要一些东西,将确定一周的实际日期,一个月的周数,并根据这些文件来确定保留哪些文件和删除哪些文件

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

这个怎么样:

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"

因为我在$find中找到了与第二个星期一匹配的| grep-v**regex**与第二个星期一匹配的| grep-v**regex**。。。。;不做rm$i;当您访问real时,这样的正则表达式可以很容易地编写和调试system@Arenim当前位置您的评论似乎未完成。如果我可以访问真实的系统,正则表达式可以很容易地编写和调试什么?根此外,由于我不知道正则表达式,我希望避免找到一个网站来为我编写它们。是否有一种方法可以使用类似于SQL DATEPART或.NET Weekday命令的方法来确定这一点?我知道的bash足以让我自己陷入困境我一点都不流利,所以我想我应该从这里得到一些建议!谢谢@不,他的意思是你什么时候可以访问你的文件。你不需要根。你可以找到很多教程来构建你的正则表达式,比如。我的2美分是你应该提前计算第二个星期一,第二个星期二的日期。。。并将其转换为YYMMDD格式,并在您的grep@Ploutox啊,谢谢。是的,我有权访问相关的实际文件。我不了解模式,你能提供一些例子吗?