用于移动,存档和重命名文件的Shell脚本

时间:2015-07-13 01:19:06

标签: shell date unix

我正在尝试将一堆文件移动到一个新目录中," archive"然后压缩所有这些文件,并将zip重命名为" DD-MM-YYYY-DD-MM-YYYY",其中第二个DD-MM-YYYY比第一个DD-MM-提前7天 - YYYY。

这是我到目前为止所做的,

   CURRDATEforARCHIVE=`date +%Y-%m-%d`
    mv /Source/path /Destination/path/inbound/
    mv  /Destination/path/inbound /Destination/path/$CURRDATEforARCHIVE
    cd /Destination/path/
    zip -r $CURRDATEforARCHIVE.zip $CURRDATEforARCHIVE
    rm -rf /Destination/path/$CURRDATEforARCHIVE
    mkdir /Source/path/inbound

但我认为我的实施相当笨重,不是很干净。是否有更多"精简"实现它的方式?

1 个答案:

答案 0 :(得分:0)

实现第二个日期的最简单方法是使用date -d和相对时间偏移量。只需创建第二个变量:

#!/bin/sh

CURRDATEforARCHIVE=`date +%Y-%m-%d`
FUTUREforARCHIVE=`date -d "now + 7 days" "+%Y-%m-%d"`

echo "file_${CURRDATEforARCHIVE}-${FUTUREforARCHIVE}.zip"

<强>输出

$ sh sevendays.sh
file_2015-07-12-2015-07-19.zip

您还应该在删除源代码之前验证您是否成功创建了zip文件:

zip -r "$CURRDATEforARCHIVE.zip" "$CURRDATEforARCHIVE"

if [ -f "$CURRDATEforARCHIVE.zip" ] then
    rm -rf "/Destination/path/$CURRDATEforARCHIVE"
else
    printf "error: zip file creation failed '%s'\n" "$CURRDATEforARCHIVE.zip"
fi

注意:始终"quote"您的变量以防止文件名中的空格等。