我有一堆这种格式的文件:
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
了解更多信息:
[0-9]{4}
似乎不起作用)我真的迷路了。感谢。
编辑:我需要重命名每个在结尾都有日期的文件,该文件来自:* .log.2016.01.18。他们都需要保留原来的名字。所有应该改变的是删除日期。
答案 0 :(得分:3)
您必须使用%
而不是#
:您想要从结尾处删除,而不是字符串的开头。
此外,您错过了必须删除的内容.
,您不希望以blabla.log.
结尾。
当文件名包含特殊字符时,引用变量名称可防止出现意外。
合:
mv -v "$f" "${f%.[0-9][0-9][0-9][0-9].[0-9][0-9].[0-9][0-9]}"