【问题标题】:Appending date to filename, but before file extension将日期附加到文件名,但在文件扩展名之前
【发布时间】:2023-01-24 21:50:44
【问题描述】:

我需要将当前日期附加到文件名的末尾,目前使用以下内容:

mv "$file" "${file}_$dateNow"

因此,如果我有文件“Testfile1.xml”,它将更改为“Testfile1.xml230124”

我想要做的是将日期放在文件名之后,但在文件扩展名之前,即“Testfile1120324.xml”

我该怎么做?文件扩展名并不总是 .xml,可以是任意长度的任何内容。

非常感谢您的帮助

【问题讨论】:

  • 不应该是mv "${file}.${ext}" "${file}_$(date +%y%m%d).${ext}"吗? :-)(带有一个小“y”,以便年份仅包含 2 个字符)

标签: bash


【解决方案1】:

这将起作用并将日期放在多个文件扩展名之前,例如 tar.gz

mv "${file}" "${file%%.*}${dateNow}.${file#*.}"

例如,如果您只想将日期放在第一个扩展名之前,您可以这样做:

mv "${file}" "${file%.*}${dateNow}.${file##*.}"

【讨论】:

    【解决方案2】:
    filename="example.txt"
    extension="${filename##*.}"
    filename="${filename%.*}"
    new_filename="$filename-$(date +%Y%m%d).$extension"
    mv $filename.$extension $new_filename
    

    此命令首先使用参数替换模式 ${filename## 将文件扩展名保存到名为“extension”的变量中.}。 然后它通过使用参数替换模式 ${filename%.}. 然后它创建一个名为“new_filename”的新变量,通过使用命令 date +%Y%m%d 将当前日期附加到扩展名之前的文件名并将其连接到文件名变量。 最后,它使用 mv 命令将原始文件重命名为新文件名。

    此命令将格式为 YYYYMMDD 的当前日期附加到扩展名前的文件名,您可以通过更改 `date 上的参数来更改日期的格式

    【讨论】:

      猜你喜欢
      • 2022-06-10
      • 1970-01-01
      • 2018-10-22
      • 1970-01-01
      • 2019-07-07
      • 1970-01-01
      • 2012-02-25
      • 2015-01-03
      • 1970-01-01
      相关资源
      最近更新 更多