清理目录中的文件名

时间:2010-11-04 20:17:39

标签: bash sed awk rename

我想运行一个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)之前被删除,我不确定如何将文件替换为如此动态的文件。有时在后缀之前可能只有一个空格,有时也没有,因为脚本也会删除双重句点。

有关解决问题的任何想法吗?

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

您可能希望将所有句点转换为空格,然后通过管道输入设置扩展名的命令。

示例(忽略您指出的其他特殊情况):

tr '.' ' ' | sed 's/ \([^ ]*\)$/.\1/'