Unix中带有时间戳的重命名文件命令

21

你好,我正在使用Putty并尝试使用当前时间戳重命名文件名。

我使用了以下命令来按日期重命名文件

mv abc.log $(date +%F)prod.txt

上述命令可以重命名,但不能按时间重命名,它的输出结果为:

2014-05-12prodabc.log

接下来的命令是:

abc.log $(date +%y)$(date +%m)$(date +%d)abcprod.log

输出:

140512abc.log

实际上,我的要求如下:

  • abc.log重命名为abc-<当前时间戳>.log
    • 例如:abc.log变成abc-12-05-2014-17:31.log
  • 然后创建新文件abc.log

请帮忙,提前感谢大家。


1
可能是Linux使用仅有时间/日期戳的方式重命名文件的重复问题。 - kirill_igum
5个回答

39
你可以使用

mv test.dat test_$(date +%d-%m-%Y).dat
如果您想知道如何控制输出,请查看日期手册。
man date 

14

使用这个:

mv abc.log $(date +%F-%H:%M).log && touch abc.log

在这里,

+%F-%H:%M将会给你一个类似于2014-05-19-14:47的格式。 如果重命名成功,touch将会创建一个新的空文件。


3

This this:

 str=abc; mv ${str}.log ${str}-$(date +%F'-'%T).log

0

一行代码版本

FILE=abc.log ;  BASE=${FILE%%.*} ; EXT=${FILE##*.} ; cp $BASE.$EXT $BASE-$(date +%F'-'%T).$EXT ; > $BASE.$EXT

0
如果你正在使用 cPanel 创建一个 Cron 任务:请注意,你需要在百分号前加上反斜杠。这是可以工作的:cp log.txt log.date +"\%d\%m\%Y".txt。

cp log.txt log_date +"%d%m%Y".txt - tao

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接