在 Linux 上为文件名提供当前日期的最快方法

在 Linux 上为文件名提供当前日期的最快方法

很多时候我都会想用当前日期来命名文件或目录。大多数情况下,我都会偶尔进行临时备份,以防以后弄乱。

而且,由于导出的文件(例如数据库)将始终具有相同的名称,我不想覆盖旧的临时备份,因此最好的解决方案是为其指定一个日期。我很厌倦输入当前日期以及下划线,但我更厌倦将鼠标悬停在时钟上以检查日期。

所以我想知道是否有任何内置的快捷方式可以粘贴当前日期?如果没有,我可以创建一个吗?有什么最快的方法可以更轻松地将文件/文件夹命名为当前日期?

答案1

在 shell 中,使用命令替换:

touch "$(date)"

或者,使用格式

touch "$(date +%Y-%m-%d_%H.%M.%S)"

您可以将较长的命令保留在别名或函数中

alias ts='date +%Y-%m-%d_%H.%M.%S'
touch "$(ts)"

答案2

按照 choroba 的建议,你可以定义一个自定义操作在 Thunar 的上下文菜单上

答案3

有多种方法可以附加文件:

堆栈溢出

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

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

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

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

  1. 将文件分成名称和扩展名。

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

$ 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_05-10-15.txt

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

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

其他方法包括:

$ 日期 2013 年 10 月 16 日星期三 19:20:51 EDT

如果您确实想要这样的文件名,则需要将该字符串用引号引起来。

$ touch "foo.backup.$(日期)"

$ ll foo* -rw-rw-r-- 1 saml saml 0 2013 年 10 月 16 日 19:22 foo.backup.Wed 2013 年 10 月 16 日 19:22:29 EDT

我猜你可能在考虑附加一个不同的字符串。我通常使用类似这样的方法:

$ touch "foo.backup.$(date +%F_%R)"
$ ll foo*
-rw-rw-r-- 1 saml saml 0 Oct 16 19:25 foo.backup.2013-10-16_19:25

有关日期和时间输出的更多格式代码,请参阅 date 的手册页。其他格式

如果您想要完全控制,请查阅手册页,执行以下操作:

$ date +"%Y%m%d"
20131016

$ date +"%Y-%m-%d"
2013-10-16

$ date +"%Y%m%d_%H%M%S"
20131016_193655

相关内容