文件批量修改文件名

文章目录

前言

笔者在使用jekyll生成网页时,需要把每个md文档的前面加上形如"2023-12-26-"的前缀,那么如何批量地修改文件名呢?

linux

在文件所在的目录打开终端,输入以下命令:

for file in *.md; do mv "$file" "$(date +'%Y-%m-%d')-$file"; done

这个命令会遍历当前目录下的所有.md文件,将它们的文件名改为当前日期加-再加原文件名。日期格式可以根据需要进行调整。

解释以下命令:

  1. for file in *.md; do ...; done

    • for file in *.md:这是一个循环语句,它遍历当前目录下所有以 .md 结尾的文件,并将每个文件的文件名赋值给变量 file
  2. mv "$file" "$(date +'%Y-%m-%d')_$file"

    • mv "$file":这是移动命令(mv),用于重命名文件。"$file"表示当前循环的文件名。
    • "$(date +'%Y-%m-%d')_$file":这是新的文件名。$(date +'%Y-%m-%d') 用于获取当前日期,并使用'%Y-%m-%d'格式指定日期的显示方式。然后使用-连接日期和原文件名,这就是新的文件名。

在 Bash 中,变量在赋值和引用时有不同的语法。当你赋值给变量时,使用 = 符号,例如 file=example.md。当你引用变量时,使用 $ 符号来获取该变量的值,例如 echo $file

$file 放在双引号中的原因是为了处理文件名中可能包含空格等特殊字符的情况。如果文件名中有空格,而没有使用双引号括起来,Bash 会将空格解释为分隔符,导致命令无法正确执行。

例如,假设有一个文件名为 “my file.md”,如果不使用双引号,命令会被解释为 mv my file.md,而这样会导致错误。通过使用双引号,Bash 可以正确地将整个文件名作为单个参数传递给 mv 命令。

date +'%Y-%m-%d' 是 Linux 系统中用于获取当前日期的命令。这个命令以指定的日期格式输出当前日期。

解释一下日期格式中的部分:

  • %Y 表示年份的四位数。
  • %m 表示月份的两位数。
  • %d 表示日期的两位数。

windows

在 Windows 环境下,你可以使用 PowerShell 脚本来实现类似的批量文件重命名操作。下面是一个示例 PowerShell 脚本,用于在文件名前面添加当前日期:

Get-ChildItem *.md | ForEach-Object {     
	$newName = (Get-Date).ToString('yyyy-MM-dd') + '-' + $_.Name     
	Rename-Item $_.FullName $newName }

这个脚本的作用是遍历当前目录下的所有 .md 文件,然后为每个文件生成一个新的文件名,其中包含当前日期,并使用 Rename-Item 命令将文件重命名为新的文件名。

在 PowerShell 中,$_ 表示管道中当前对象的变量。在这个脚本中,$_ 指代了 Get-ChildItem 返回的每个文件对象。

  • 29
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值