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

2024-11-07 08:55:00
admin
原创
29
摘要:问题描述:我想在文件名 (“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”提取扩展名

相关推荐
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   601  
  华为IPD与传统研发模式的8大差异在快速变化的商业环境中,产品研发模式的选择直接决定了企业的市场响应速度和竞争力。华为作为全球领先的通信技术解决方案供应商,其成功在很大程度上得益于对产品研发模式的持续创新。华为引入并深度定制的集成产品开发(IPD)体系,相较于传统的研发模式,展现出了显著的差异和优势。本文将详细探讨华为...
IPD流程是谁发明的   7  
  如何通过IPD流程缩短产品上市时间?在快速变化的市场环境中,产品上市时间成为企业竞争力的关键因素之一。集成产品开发(IPD, Integrated Product Development)作为一种先进的产品研发管理方法,通过其结构化的流程设计和跨部门协作机制,显著缩短了产品上市时间,提高了市场响应速度。本文将深入探讨如...
华为IPD流程   9  
  在项目管理领域,IPD(Integrated Product Development,集成产品开发)流程图是连接创意、设计与市场成功的桥梁。它不仅是一个视觉工具,更是一种战略思维方式的体现,帮助团队高效协同,确保产品按时、按质、按量推向市场。尽管IPD流程图可能初看之下显得错综复杂,但只需掌握几个关键点,你便能轻松驾驭...
IPD开发流程管理   8  
  在项目管理领域,集成产品开发(IPD)流程被视为提升产品上市速度、增强团队协作与创新能力的重要工具。然而,尽管IPD流程拥有诸多优势,其实施过程中仍可能遭遇多种挑战,导致项目失败。本文旨在深入探讨八个常见的IPD流程失败原因,并提出相应的解决方法,以帮助项目管理者规避风险,确保项目成功。缺乏明确的项目目标与战略对齐IP...
IPD流程图   8  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

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

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

内置subversion和git源码管理

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

免费试用