我正在尝试编写一个bash脚本来转换家庭网络上的流文件。
我想知道社区是否可以推荐一些东西,允许我使用现有的正则表达式搜索字符串中是否存在模式,并替换模式后面的文本。
其中一部分包括命名文件以包括质量、发行年份和剧集信息(如果其中任何一项可用)。
我有一些Python正则表达式,我试图转换成一个bash正则表达式搜索和替换。
有几个选项,如Sed,Grep或AWK,但我不确定什么是最适合我的方法。
我现有的python正则表达式显然使用了一个扩展的perl形式的正则表达式。
# Captures quality 1080p or 720p
determinedQuality = re.findall("[0-9]{3}[PpIi]{1}|[0-9]{4}[PpIi]{1}", next_line)
# Captures year (4 characters long and only numeric)
yearInitial = str(re.findall("[0-9]{4}[^A-Za-z]", next_line))
# Lazy programming on my part to clear up the string gathered from the year
determinedYear = re.findall("[0-9]{4}", yearInitial)
# If the string has either S00E00 or 1X99 present then its a TV show
determinedEpisode = re.findall("[Ss]{1}[0-9]{2}[Ee]{1}[0-9]{2}|[0-9]{1}[x]{1}[0-9]{2}", next_line)
我的目标是以小写的文件名结束,文件名中用下划线代替空格,如果可能的话,还包括质量信息:
# Sample of desired file names
harry_potter_2001_720p_philosphers_stone.mkv
S01E05_fringe_1080p.mkv
1条答案
按热度按时间5sxhfpxr1#
我简化了正则表达式,例如,如果您需要3或4个正则表达式,则可以使用{3,4},而{1}是多余的,则可以删除它。
第一个输出:
第二个输出: