如何删除不符合Radarr「名称(YYYY)」格式的电影目录及内容?
解决Radarr电影目录格式清理问题
正确的目标目录查找命令
你之前的正则未匹配格式要求的空格与括号,且括号在正则中属于特殊字符必须转义。正确的find命令如下:
find /path/to/movies -regextype posix-egrep -type d -not -iregex '.*/[^/]+ \([0-9]{4}\)$'
命令细节解释:
/path/to/movies:替换为你的电影根目录,不要用相对路径.(cron执行时相对路径可能失效)-regextype posix-egrep:启用扩展正则语法支持-type d:仅筛选目录类型-not -iregex:反向匹配符合规范的目录,即找出不符合格式的目标- 正则部分
.*/[^/]+ \([0-9]{4}\)$:.*/:匹配路径中最后一个目录前的所有前缀内容[^/]+:匹配目录名的主体部分(任意非斜杠字符)\(:匹配空格加左括号(左括号转义避免被正则解析为分组符号)[0-9]{4}:匹配四位数字年份\)$:匹配右括号并锚定到路径结尾,确保整个目录名完全符合「名称(四位年份)」格式
转为cron可执行的清理脚本
重要提醒:先单独运行上面的查找命令,确认返回结果都是你要删除的目录后,再添加删除操作。确认无误后,最终命令如下:
find /path/to/movies -regextype posix-egrep -type d -not -iregex '.*/[^/]+ \([0-9]{4}\)$' -exec rm -rf {} +
添加到cron的步骤:
- 打开crontab编辑界面:
crontab -e - 添加定时规则(示例为每天凌晨2点执行):
注:cron中的引号需要用0 2 * * * /bin/bash -c 'find /path/to/movies -regextype posix-egrep -type d -not -iregex '\''.*/[^/]+ \([0-9]{4}\)$'\'' -exec rm -rf {} +'\'转义,避免语法解析错误。
问题根源说明
- 你之前的命令未匹配格式要求的空格与括号,且未锚定路径结尾,会误判大量不符合要求的目录(比如包含四位数字但不是年份后缀的目录)
- 括号是正则的特殊字符,必须用
\转义,否则会被当成分组逻辑符号,导致正则匹配完全偏离预期
内容的提问来源于stack exchange,提问作者davekrappin
相关产品推荐
相关产品推荐

