2015-07-13 128 views
0

我想將一堆文件移動到一個新目錄中,「存檔」,然後壓縮所有這些文件,並將zip重命名爲「DD-MM-YYYY-DD- MM-YYYY「,其中第二個DD-MM-YYYY比第一個DD-MM-YYYY早7天。Shell腳本移動,存檔和重命名文件

這是我迄今所做的,

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 

但我認爲我的實現是非常笨拙,不是很乾淨。是否有更「精簡」的方式來實現它?

+0

運行此操作之前是否存在入站? –

+0

是的。實施工作,但我想知道是否有更好的方法來實現這項任務。例如,在歸檔位置創建一個空文件夾並單獨移動文件會更好嗎? –

+0

如果mv /D.../path/inbound/D .../path/$ C ...正在重命名,您可以mkdir ... $ C ... first和mv /D.../path/ inbound/* /S.../path/*/D .../path/$ C ...如果沒有點文件(隱藏文件)需要壓縮。 –

回答

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 

你也應該veriify你成功創建了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"您的變量爲防止文件名中的空格等。