在Linux中将日期附加到文件名

2024-11-07 08:55:00
admin
原创
167
摘要:问题描述:我想在文件名 (“somefile.txt”) 旁边添加日期。例如:somefile_25-11-2009.txt 或 somefile_25Nov2009.txt 或类似内容也许脚本可以做到,或者终端窗口中的一些命令。我正在使用 Linux(Ubuntu)。每次您想要将文件保存到特定文件夹但仍保留...

问题描述:

我想在文件名 (“somefile.txt”) 旁边添加日期。例如:somefile_25-11-2009.txt 或 somefile_25Nov2009.txt 或类似内容

也许脚本可以做到,或者终端窗口中的一些命令。我正在使用 Linux(Ubuntu)。

每次您想要将文件保存到特定文件夹但仍保留以前的文件时,脚本或命令都会将文件名更新为新日期。因此文件夹中最终会有这样的文件:filename_18Oct2009.txt、filename_9Nov2009.txt、filename_23Nov2009.txt


解决方案 1:

信息/摘要

使用 bash 脚本,您可以将命令括在反引号或括号中。这对于标记文件非常有用,下面将创建一个文件名,并在其后附加日期。

方法

Backticks -

$ echo myfilename-"`date +"%d-%m-%Y"`"

$(parantheses) -

$ echo myfilename-$(date +"%d-%m-%Y")

用法示例:

echo "Hello World" > "/tmp/hello-$(date +"%d-%m-%Y").txt"

(creates text file '/tmp/hello-28-09-2022.txt' with text inside of it)

请注意,在 Linux 中引号是您的朋友,最佳做法是将文件名括起来,以防止变量中出现空格等问题。

解决方案 2:

这里有两个问题。

1. 获取字符串形式的日期

这很简单。只需使用date带有+选项的命令即可。我们可以使用反引号来捕获变量中的值。

$ DATE=`date +%d-%m-%y` 

您可以使用日期手册页%中详细说明的不同选项来更改日期格式。

2. 将文件拆分为名称和扩展名。

.这有点棘手。如果我们认为文件名中只有一个,我们可以使用cutwith.作为分隔符。

$ NAME=`echo $FILE | cut -d. -f1
$ EXT=`echo $FILE | cut -d. -f2`

.但是,如果文件名中有多个,则此方法不起作用。如果我们使用bash- 您可能正在使用 - 我们可以使用一些bash magic,允许我们在进行变量扩展时匹配模式:

$ NAME=${FILE%.*}
$ EXT=${FILE#*.} 

把它们放在一起我们得到:

$ FILE=somefile.txt             
$ NAME=${FILE%.*}
$ EXT=${FILE#*.} 
$ DATE=`date +%d-%m-%y`         
$ NEWFILE=${NAME}_${DATE}.${EXT}
$ echo $NEWFILE                 
somefile_25-11-09.txt                         

如果我们不太担心可读性,我们可以在一行上完成所有工作(使用不同的日期格式):

$ FILE=somefile.txt  
$ FILE=${FILE%.*}_`date +%d%b%y`.${FILE#*.}
$ echo $FILE                                 
somefile_25Nov09.txt

解决方案 3:

cp somefile somefile_`date +%d%b%Y`

解决方案 4:

您可以在subshel​​ldate中在文件名调用命令旁边添加日期。

date带有所需格式选项的命令在子 shell中执行,调用括号$()或反引号 ( ) 之间的命令,然后将输出放置在原始命令中。

更推荐使用in $(...),因为 in 可以嵌套。因此,您可以在另一个替换中使用命令替换。

问题请求的解决方案

$ echo somefile_$(date +%d-%m-%Y).txt
somefile_28-10-2021.txt

$ echo somefile_$(date +%d%b%Y).txt
somefile_28Oct2021.txt

date命令带有许多格式选项,允许您根据要求自定义日期输出。

  • %D – 以 mm/dd/yy 格式显示日期(例如:10/28/21)

  • %Y – 年份(例如:2021)

  • %m – 月份(例如:10)

  • %B – 完整字符串格式的月份名称(例如:October)

  • %b – 缩写字符串格式的月份名称(例如:Oct)

  • %d – 月份中的日期(例如:28)

  • %j – 一年中的某一天(例如:301)

  • %u – 星期几(例如:4)

  • %A – 完整字符串格式的星期几(例如:星期四)

  • %a – 缩写格式的星期几(例如:Thu)

解决方案 5:

我在 Bash 中使用了这个脚本:

#!/bin/bash

now=$(date +"%b%d-%Y-%H%M%S")
FILE="$1"
name="${FILE%.*}"
ext="${FILE##*.}"

cp -v $FILE $name-$now.$ext

此脚本将 filename.ext复制到 filename-date.ext,还有另一个脚本将 filename.ext移动到 filename-date.ext,您可以从此处下载它们。希望您觉得它们有用!!

解决方案 6:

我在树莓派上使用它,第一个答案对我来说不起作用,可能是因为我输入错误还是什么?我不知道。所以我结合了上述答案,得出了以下结论:

now=$(date +'%Y-%m-%d')
geany "OptionalName-${now}.txt"

如果你想使用 geany 或其他任何东西

在此处输入图片描述
在此处输入图片描述

解决方案 7:

稍微复杂一点的解决方案,完全符合您的规格

echo `expr $FILENAME : '(.*).[^.]*'`_`date +%d-%m-%y`.`expr $FILENAME : '.*.([^.]*)'`

第一个“expr”提取不带扩展名的文件名,第二个“expr”提取扩展名

相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   1565  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1354  
  信创国产芯片作为信息技术创新的核心领域,对于推动国家自主可控生态建设具有至关重要的意义。在全球科技竞争日益激烈的背景下,实现信息技术的自主可控,摆脱对国外技术的依赖,已成为保障国家信息安全和产业可持续发展的关键。国产芯片作为信创产业的基石,其发展水平直接影响着整个信创生态的构建与完善。通过不断提升国产芯片的技术实力、产...
国产信创系统   21  
  信创生态建设旨在实现信息技术领域的自主创新和安全可控,涵盖了从硬件到软件的全产业链。随着数字化转型的加速,信创生态建设的重要性日益凸显,它不仅关乎国家的信息安全,更是推动产业升级和经济高质量发展的关键力量。然而,在推进信创生态建设的过程中,面临着诸多复杂且严峻的挑战,需要深入剖析并寻找切实可行的解决方案。技术创新难题技...
信创操作系统   27  
  信创产业作为国家信息技术创新发展的重要领域,对于保障国家信息安全、推动产业升级具有关键意义。而国产芯片作为信创产业的核心基石,其研发进展备受关注。在信创国产芯片的研发征程中,面临着诸多复杂且艰巨的难点,这些难点犹如一道道关卡,阻碍着国产芯片的快速发展。然而,科研人员和相关企业并未退缩,积极探索并提出了一系列切实可行的解...
国产化替代产品目录   28  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用