在大写字符之前插入句点



我有一些文件的名称要更改。

示例:

HawaiiFive02010SXXEXXW.ac3
Nashville2012SXXEXXW.ac3
HowToGetAwayWithMurderSXXEXXW.ac3
BetterCallSaulSXXEXXW.ac3
BeautyAndTheBeast2012SXXEXXW.ac3

我需要转换它们:

Nashville.2012.SXXEXX.W.ac3
How.To.Get.Away.With.Murder.SXXEXX.W.ac3
Better.Call.Saul.SXXEXX.W.ac3
Beauty.And.The.Beast.2012.SXXEXX.W.ac3
Hawaii.Five.0.2010.SXXEXX.W.ac3

我发现了这个:

echo Nashville2012SXXEXXW.ac3 | sed 's/[A-Z]/.&/g;s/^.//'
Nashville2012.SXX.EXX.W.ac3
echo HowToGetAwayWithMurderSXXEXXW.ac3 | sed 's/[A-Z]/.&/g;s/^.//'
How.To.Get.Away.With.Murder.SXX.EXX.W.ac3

如果无法更改文件名,我会自己调用它们。我只是想知道这是否有可能找到一种方法,但如果它太复杂,我会花时间,因为脚本的其余部分都可以工作:)

使用GNU sed:

sed -r 's/([A-Z][^A-Z.]+)/1./g;s/[0-9]{4}/.&/g;s/([0-9])([0-9]{4})[^$]/1.2./;s/SXXEXXW/SXXEXX.W/;s/(S[0-9][0-9])./1/'

示例:

$ echo Nashville2012SXXEXXW.ac3 | sed -r 's/([A-Z][^A-Z.]+)/1./g;s/[0-9]{4}/.&/g;s/([0-9])([0-9]{4})[^$]/1.2./;s/SXXEXXW/SXXEXX.W/;s/(S[0-9][0-9])./1/'
Nashville.2012.SXXEXX.W.ac3
$ echo HowToGetAwayWithMurderSXXEXXW.ac3 | sed -r 's/([A-Z][^A-Z.]+)/1./g;s/[0-9]{4}/.&/g;s/([0-9])([0-9]{4})[^$]/1.2./;s/SXXEXXW/SXXEXX.W/;s/(S[0-9][0-9])./1/'
How.To.Get.Away.With.Murder.SXXEXX.W.ac3
$ echo HawaiiFive02010S03E08W.ac3 | sed -r 's/([A-Z][^A-Z.]+)/1./g;s/[0-9]{4}/.&/g;s/([0-9])([0-9]{4})[^$]/1.2./;s/SXXEXXW/SXXEXX.W/;s/(S[0-9][0-9])./1/'
Hawaii.Five.0.2010.S03E08.W.ac3

最新更新