bash 中包含日期格式和 .zip 扩展名的备份文件的正则表达式

标签 regex linux bash file git-bash

我是 bash 的新手,需要帮助来选择具有特定日期格式和 .zip 扩展名的文件。我想使用正则表达式来选择正确的文件。以下是我希望选择的文件格式

2017-Apr-13--2315.zip

所以基本上是年份、月份(3 个字母)、日期和备份发生的时间,即 .zip 扩展名之前的 4 位数字。 我正在努力在 Regex101 上做对

最终,我想选择正确的文件并删除所有备份,但保留最新的 6 个备份。我正在使用的命令在下面

find . -maxdepth 1 -type f | tac | tail -n +7 | xargs rm -rf

但目录中还有其他文件不是备份。所以我需要选择正确的文件,其正则表达式与我上面提供的文件格式匹配。

最佳答案

以下 regex 可能与 find 一起使用:

find . -regextype egrep -iregex '.*/[0-9]{4}-[a-z]{3}-[0-9]{2}--[0-9]{4}\.zip$'

要删除匹配的文件,您可以使用:

find . -regextype egrep -iregex '.*/[0-9]{4}-[a-z]{3}-[0-9]{2}--[0-9]{4}\.zip$' -delete

关于bash 中包含日期格式和 .zip 扩展名的备份文件的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52259281/

相关文章:

python - selenium webdriver.Firefox 不为非 sudo 用户启动

bash - 为什么 getopts 只在第一次起作用?

bash - Scala Bash 测试脚本

PHP 系统调用函数不能正确导出变量

regex - 正则表达式查找单词之间的空格或字母和数字的组合(不在行尾)并用逗号替换

php - 正则表达式可选重复组

linux - 使用$?在 if 语句条件表达式中

python - 匹配具有特定字符串的行以提取值 Python Regex

java - 删除成对的括号({},(),[])和其中的文本,并用Java中字符串中的空格替换剩余的不成对的

linux - 我如何在 bash 中检查和创建目录