在Linux中将日期附加到文件名
- 2024-11-07 08:55:00
- admin 原创
- 29
问题描述:
我想在文件名 (“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. 将文件拆分为名称和扩展名。
.
这有点棘手。如果我们认为文件名中只有一个,我们可以使用cut
with.
作为分隔符。
$ 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:
您可以在subshelldate
中在文件名调用命令旁边添加日期。
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”提取扩展名
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理必备:盘点2024年13款好用的项目管理软件