我有一系列媒体文件正在尝试批量重命名。
001 - 01x01 - mediaTitle1.avi
002 - 01x02 - mediaTitle2.avi
003 - 01x03 - mediaTitle3.avi
我想要的是输出:
Series Title S01 E01 - mediaTitle1.avi
Series Title S01 E02 - mediaTitle2.avi
Series Title S01 E03 - mediaTitle3.avi
我正在尝试这个:
for f in *01x*; do echo mv -v "$f" "Series Title S01 E{f#1}"; done
但它失败了。所以我想保留文件的结尾并替换每个文件的开头
答案1
您很接近,但忘记(?)进行$
变量扩展,尝试:
for f in *01x*; do mv -v -- "$f" 'Series Title S01 E'"${f#*01x}"; done
请注意目标文件中的单引号,因为文件名中存在空格。
答案2
cd /path/to/avidir; mkdir ../avidir2
pax -rwls '|.* - \(..\)x\(.. - \)|Series Title S\1 E\2|' *.avi ../avidir2
上面的命令将创建指向另一个目录中所有文件的硬链接。这使您能够在删除具有不需要的名称的文件之前验证所有更改是否令您满意。