我想运行一个bash脚本,以递归方式清理目录中的每个文件名。例如,我有文件名:
The.Sarah.Jane.Adventures.S04E07.The.Empty.Planet.Part1.WS.PDTV.XviD-BIA。[sharethefiles.com] .AVI The.Sarah.Jane.Adventures.S04E08.The.Empty.Planet.Part2.WS.PDTV.XviD-BIA。[sharethefiles.com]的.avi
我想将文件转换为:
Sarah Jane Adventures S04E07 The Empty Planet Part1.avi
Sarah Jane Adventures S04E07 The Empty Planet Part2.avi
所以我有这个sed脚本:
sed -e's/\[sharethefiles\.com\]//g; s/WS//g; s/PDTV//g; s/Xvid-BiA//g; s/XviD-BiA//g; s/\.\.//g; s/\./\ /g;'
但它带来了问题。的。 (句点)在后缀(avi)之前被删除,我不确定如何将文件替换为如此动态的文件。有时在后缀之前可能只有一个空格,有时也没有,因为脚本也会删除双重句点。
有关解决问题的任何想法吗?
感谢您的帮助!
答案 0 :(得分:2)
您可能希望将所有句点转换为空格,然后通过管道输入设置扩展名的命令。
示例(忽略您指出的其他特殊情况):
tr '.' ' ' | sed 's/ \([^ ]*\)$/.\1/'