是否可以使用 bash 即时重命名和替换?例如我有
VTS_01_1.VOB VTS_01_2.VOB VTS_01_3.VOB
我想重命名以便在 mencoder 中使用
movie_1.avi movie_2.avi,etc..
我知道如何替代VTS,但不知道如何替代VOB。
for i in VTS_01_[1-4]*B;do echo ${i/VTS_0?_?.VOB/Movie}.avi;done
给我吗
Movie.avi
Movie.avi
Movie.avi
Movie.avi
我想
Movie_1.avi
Movie_2.avi
Movie_3.avi
Movie_4.avi
答案1
您可以分两步完成,例如首先删除扩展名,然后替换VTS_01
前缀:
$ for i in VTS_01_[1-4]*B; do b="${i%.VOB}"; echo "${b/VTS_01/Movie}.avi"; done
Movie_1.avi
Movie_2.avi
Movie_3.avi
答案2
答案3
你为什么不使用Python?就像是
$ ipython
In [1]: import os
In [2]: all_files = os.listdir(".")
In [3]: for filename in all_files:
In [4]: newname = 'Movie' + filename[6:9] + 'avi'
In [5]: os.rename(filename, newname)
应该可以解决你的问题。
答案4
答对了!
for i in VTS_01_[1-4]*B;do echo mv $i "$(echo $i|sed 's/VTS/Movie/g;s/VOB/avi/g')";done
对于 mencoder 等命令更有用