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

时间:2009-11-25 09:22:00

标签: linux ubuntu append rename filenames

我想在文件名旁边添加日期(“somefile.txt”)。例如:somefile_25-11-2009.txt或somefile_25Nov2009.txt或其他任何效果

也许脚本会在终端窗口中执行或执行某些命令。我正在使用Linux(Ubuntu)。

提前致谢。

哦,我几乎忘了添加脚本或命令应该在每次要将文件保存到特定文件夹但仍保留以前的文件时将文件名更新为新日期。所以文件夹中最终会有这样的文件:filename_18Oct2009.txt,filename_9Nov2009.txt,filename_23Nov2009.txt

6 个答案:

答案 0 :(得分:34)

这里有两个问题。

<强> 1。以字符串形式获取日期

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

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

您可以使用date man page上详细说明的不同%选项更改日期格式。

<强> 2。将文件拆分为名称和扩展名。

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

.

但是,这不适用于文件名中的多个$ NAME=`echo $FILE | cut -d. -f1 $ EXT=`echo $FILE | cut -d. -f2` 。如果我们使用. - 你可能是 - 我们可以使用一些bash magic that allows us to match patterns when we do variable expansion

bash

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

$ 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                         

答案 1 :(得分:29)

你可以使用反引号。

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

收率:

myfilename-25-11-2009

答案 2 :(得分:12)

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

答案 3 :(得分:0)

与您的规范完全匹配的更复杂的解决方案

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

其中第一个'expr'提取没有扩展名的文件名,第二个'expr'提取扩展名

答案 4 :(得分:0)

我在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,还有另一个将 moves filename.ext移至filename-date.ext的文件,您可以从here。 希望您发现它们有用!

答案 5 :(得分:0)

我在 raspberry pi 中使用它,第一个答案对我不起作用,也许是因为我输入错误或什么?我不知道。所以我结合了上面的答案并想出了这个:

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

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

enter image description here enter image description here