很多时候我都会想用当前日期来命名文件或目录。大多数情况下,我都会偶尔进行临时备份,以防以后弄乱。
而且,由于导出的文件(例如数据库)将始终具有相同的名称,我不想覆盖旧的临时备份,因此最好的解决方案是为其指定一个日期。我很厌倦输入当前日期以及下划线,但我更厌倦将鼠标悬停在时钟上以检查日期。
所以我想知道是否有任何内置的快捷方式可以粘贴当前日期?如果没有,我可以创建一个吗?有什么最快的方法可以更轻松地将文件/文件夹命名为当前日期?
答案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
有多种方法可以附加文件:
从堆栈溢出:
- 获取字符串形式的日期
这很简单。只需使用带有 + 选项的 date 命令即可。我们可以使用反引号来捕获变量中的值。
$ DATE=`date +%d-%m-%y`
您可以使用日期上详细说明的不同 % 选项来更改日期格式手册页。
- 将文件分成名称和扩展名。
这有点棘手。如果我们认为文件名中只有一个 .,我们可以使用 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