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

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

相关推荐
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1120  
  IPD(Integrated Product Development,集成产品开发)流程是一种广泛应用于高科技和制造业的产品开发方法论。它通过跨职能团队的紧密协作,将产品开发周期缩短,同时提高产品质量和市场成功率。在IPD流程中,CDCP(Concept Decision Checkpoint,概念决策检查点)是一个关...
IPD培训课程   75  
  研发IPD(集成产品开发)流程作为一种系统化的产品开发方法,已经在许多行业中得到广泛应用。它不仅能够提升产品开发的效率和质量,还能够通过优化流程和资源分配,显著提高客户满意度。客户满意度是企业长期成功的关键因素之一,而IPD流程通过其独特的结构和机制,能够确保产品从概念到市场交付的每个环节都围绕客户需求展开。本文将深入...
IPD流程   66  
  IPD(Integrated Product Development,集成产品开发)流程是一种以跨职能团队协作为核心的产品开发方法,旨在通过优化资源分配、提高沟通效率以及减少返工,从而缩短项目周期并提升产品质量。随着企业对产品上市速度的要求越来越高,IPD流程的应用价值愈发凸显。通过整合产品开发过程中的各个环节,IPD...
IPD项目管理咨询   76  
  跨部门沟通是企业运营中不可或缺的一环,尤其在复杂的产品开发过程中,不同部门之间的协作效率直接影响项目的成败。集成产品开发(IPD)作为一种系统化的项目管理方法,旨在通过优化流程和增强团队协作来提升产品开发的效率和质量。然而,跨部门沟通的复杂性往往成为IPD实施中的一大挑战。部门之间的目标差异、信息不对称以及沟通渠道不畅...
IPD是什么意思   70  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

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

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

内置subversion和git源码管理

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

免费试用