今天的下载文件里出现了带有 v2 的情况,于是借着这个机会改善一下批量重命名脚本
首先是试验场
rafom@rfm-main-win:~/playground$ ls
'Some test text 01 [Test 111].txt' 'Some test text 05 [Test 111][add. text].test' test
'Some test text 03v2 [Test 111].txt' 'Some test text 2 [Test 111].txt'
'Some test text 04 [Test 111][add. text].txt' resource
模拟了不需要的文件类型、有附加信息、有v2、集数只有一位的情况
首先使用扩展正则表达式标记 -re,然后在替换时使用 \1、\3 这类标记来匹配子串,并且不对话数之后的部分进行精确匹配。用先补 0 后删除多余位的方式处理集数只有一位的情况。调整后的命令大概是下面这个样子
rafom@rfm-main-win:~/playground$ ls | grep -E '^Some test text [0-9]?[0-9](v[0-9])? .*\.txt$' | while read line; do echo $line; echo $line | sed -re 's/Some test text ([0-9]?[0-9])(v[0-9])? .*(\.txt)/S01E0\1\3/' -re 's/[0-9]?([0-9][0-9])\./\1\./'; done
Some test text 01 [Test 111].txt
S01E01.txt
Some test text 03v2 [Test 111].txt
S01E03.txt
Some test text 04 [Test 111][add. text].txt
S01E04.txt
Some test text 2 [Test 111].txt
S01E02.txt
看起来没问题,那么根据这个去修改实际的脚本,如下
#!/bin/bash
ls /volume1/downloads/anime | grep -E '^\[ANi\] 蔚藍檔案 The Animation \- [0-9]?[0-9](v[0-9])? .*\.mp4$' | while read line; do mv -b /volume1/downloads/anime/"$line" /volume1/media/anime/"蔚蓝档案 动画版"/$(echo $line | sed -re 's/\[ANi\] 蔚藍檔案 The Animation \- ([0-9]?[0-9])(v[0-9])? .*(\.mp4)/S01E0\1\3/' -re 's/[0-9]?([0-9][0-9])\./\1\./'); done
ls /volume1/downloads/anime | grep -E '^\[Nekomoe kissaten&LoliHouse\] Shuumatsu Train Doko e Iku \- [0-9]?[0-9](v[0-9])? .*\.mkv$' | while read line; do mv -b /volume1/downloads/anime/"$line" /volume1/media/anime/"末日列车去哪里?"/$(echo $line | sed -re 's/\[Nekomoe kissaten&LoliHouse\] Shuumatsu Train Doko e Iku \- ([0-9]?[0-9])(v[0-9])? .*(\.mkv)/S01E0\1\3/' -re 's/[0-9]?([0-9][0-9])\./\1\./'); done
ls /volume1/downloads/anime | grep -E '^\[ANi\] 尼爾:自動人形 Ver1\.1a \- [0-9]?[0-9](v[0-9])? .*\.mp4$' | while read line; do mv -b /volume1/downloads/anime/"$line" /volume1/media/anime/"尼尔:自动人形 Ver1.1a"/$(echo $line | sed -re 's/\[ANi\] 尼爾:自動人形 Ver1\.1a \- ([0-9]?[0-9])(v[0-9])? .*(\.mp4)/S01E0\1\3/' -re 's/[0-9]?([0-9][0-9])\./\1\./'); done
执行了下没有问题,收工
参考资料: https://wangchujiang.com/linux-command/c/sed.html (快照)
正文完