将文件名格式从“2020-12-09”更改为“2020.12.09”

将文件名格式从“2020-12-09”更改为“2020.12.09”

我已经弄清楚如何使用 Bash 将日期添加到文件的开头。问题是我2020.12.09 - filename历史上所有文件都使用该格式并且更喜欢它。我的命令添加了标准格式的日期2020-12-09filename。我希望用句号替换破折号,并在日期和文件名之间添加带有空格的破折号。

任何帮助表示赞赏。谢谢你!

答案1

如果您可以编辑初始程序,请查看date手册页

date '+%Y.%m.%d'      # -->  2020.12.09

为了重命名现有文件:

prename 's/(\d{4})-(\d{2})-(\d{2})/$1.$2.$3 - /' 20*

在某些 Linux 发行版中prename称为rename

答案2

这对我有用:

mv 12-34-5.txt 12\.34\.5.txt

语法是:mv <old name> <new name>

答案3

我怀疑您正在生成这样的日期:

$ date -Idate
2020-12-09

您可以通过管道将其sed替换-.使用:

$ date -Idate | sed 's/-/./g'
2020.12.09

然后你可以重命名你的文件:

mv "$file" $(date -Idate | sed 's/-/./g')\ -\ "$file"

因为这有点冗长,你可以在中创建一个函数~/.bashrc

function add-date {
  mv "$1" $(date -Idate | sed 's/-/./g')\ -\ "$1"
}

现在来演示它的工作原理:

$ touch file1
$ ls
file1
$ add-date file1
$ ls
'2020.12.09 - file1'

相关内容