我有一个文件 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.zip
和 CBD_DATA_110620
但我只想要一个,而且它不应该是空的。
我应该如何修改我的cron代码?
首先,我试着在没有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"