Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex shell脚本中的批量重命名_Regex_Shell_Rename_Git Bash - Fatal编程技术网

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]}
:额外的
%
而不是
.
谢谢,我需要的工作就好了。