shell 脚本中的批量重命名

Mass rename in shell script

我有一堆这种格式的文件:

blabla.log.YYYY.MM.DD

其中 YYYY.MM.DD 类似于 (2016.01.18)

我有很多文件夹,每个文件夹大约有 1000 个文件,所以我想有一个简单的脚本来重命名它们。我想将它们重命名为

blabla.log

所以基本上,我只是去掉最后的日期。这是我拥有的:

for f in [a-zA-Z]*.log.[0-9][0-9][0-9][0-9].[0-9][0-9].[0-9][0-9]; do 
    mv -v $f ${f#[0-9][0-9][0-9][0-9].[0-9][0-9].[0-9][0-9]}; 
done

这个脚本输出这个:

mv: `blabla.log.2016.01.18' and `blabla.log.2016.01.18' are the same file

更多信息:

我真的很迷茫。谢谢。

编辑:我需要重命名末尾有日期且来自以下文件的每个文件:*.log.2016.01.18。他们都需要保留原来的名字。所有应该改变的是删除日期。

你必须使用 % 而不是 #:你想从字符串的结尾而不是开头删除。

此外,您在必须删除的内容中遗漏了一个 .,您不希望以 blabla.log. 结束。

引用变量名可以防止文件名包含特殊字符时出现意外情况。

在一起:

mv -v "$f" "${f%.[0-9][0-9][0-9][0-9].[0-9][0-9].[0-9][0-9]}"