我如何通过cron作业移动一个文件并在其名称上添加时间戳?

问题描述 投票:0回答:1

我有一个文件 CBD_DATA.zip 存在于一个目录中。/home/cbd_dev/CBD_DATA.zip. 我想把它移到以下目录 /home/sundaram_srivastava/archives/ 作为 CBD_DATA_{DateTimeStamp}.zip.

我已经尝试使用cron作业。

* * * * * mv /home/cbd_dev/CBD_DATA.zip /home/sundaram_srivastava/archives > /home/sundaram_srivastava/archives/CBD_DATA_`date +\%d\%m\%y`.zip

上面的cron作业的问题是它把文件移动为 CBD_DATA.zip 到另一个同名的目录中,然后它又创建了一个文件。 CBD_DATA_110620.

现在,该文件 CBD_DATA_110620 是0KB。所以,在目标目录下,我有两个文件。CBD_DATA.zipCBD_DATA_110620但我只想要一个,而且它不应该是空的。

我应该如何修改我的cron代码?

cron cron-task crontrigger
1个回答
0
投票

首先,我试着在没有cron工作的情况下,自己想出这个命令。你正在做的是类似这样的事情(为了便于阅读,缩短了目录路径)。

mv /foo/CBD_DATA.zip /foo/archives > /foo/archives/CBD_DATA_`date +%d%m%y`.zip

这将移动文件,然后创建一个新的空文件;没有任何输出。mv 命令,而重定向没有任何东西可以重定向,所以带有日期标签的文件是空的。

命令的第二个参数是 mv 命令是新的位置本身;如果它是一个目录,文件名保持不变,但如果它不是一个目录,它被解释为新的名称。你不需要任何重定向。

mv /foo/CBD_DATA.zip "/foo/archives/CBD_DATA_$(date '+%d%m%y').zip"

我已经将命令替换中的废弃的回标替换为 $(...) 并引用了扩展。附注:如果你可以选择datestamp格式,我强烈建议使用 +%F (或 %Y%m%d),而不是按时间顺序排序。

用你的路径和逃逸的cron作业(你真的想每分钟都运行这个吗?)。

* * * * * mv /home/cbd_dev/CBD_DATA.zip "/home/sundaram_srivastava/archives/CBD_DATA_$(date +\%d\%m\%y).zip"
© www.soinside.com 2019 - 2024. All rights reserved.