Regex shell脚本中的批量重命名
我有一堆文件是这种格式的:Regex shell脚本中的批量重命名,regex,shell,rename,git-bash,Regex,Shell,Rename,Git Bash,我有一堆文件是这种格式的: 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-
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
有关更多信息:
- 我在windows上,但我在gitbash中运行此脚本
- 出于某种原因,我的gitbash无法识别“rename”命令
- 一些正则表达式模式(如
似乎不起作用)[0-9]{4}
编辑:我需要重命名每个在末尾有日期的文件,即from:*.log.2016.01.18。他们都需要保留原来的名字。所有需要更改的是删除日期。您必须使用
%
而不是#
:您希望从字符串的末尾而不是开头删除
另外,您在必须删除的内容中缺少了一个
,您不希望以blablabla.log.
结束
引用变量名可防止文件名包含特殊字符时出现意外情况
一起:
mv -v "$f" "${f%.[0-9][0-9][0-9][0-9].[0-9][0-9].[0-9][0-9]}"
您必须使用
%
而不是#
:您希望从字符串的末尾而不是开头删除
另外,您在必须删除的内容中缺少了一个
,您不希望以blablabla.log.
结束
引用变量名可防止文件名包含特殊字符时出现意外情况
一起:
mv -v "$f" "${f%.[0-9][0-9][0-9][0-9].[0-9][0-9].[0-9][0-9]}"
是否要将所有文件重命名为
blabla.log
???请精确您的需要。${f%.[0-9][0-9][0-9][0-9][0-9][0-9][0-9]}
:额外的
和%
而不是.
非常感谢,就像我需要的那样工作。您想将所有的代码重命名为blablablablablablablablabla.log
???请精确你的需求。${f%.[0-9][0-9][0-9][0-9][0-9][0-9][0-9]}
:额外的
和%
而不是.
谢谢,我需要的工作就好了。