標籤:linux 指令碼 移動檔案 crontab crond
一:背景
在一個路徑下有很多的檔案,並且隨著時間的累積檔案會越來越多,並且檔案名稱都遵循一個基本的格式,裡麵包含了年月日等資訊,例如:TSMTPP2735D20170517142005E981.txt.gz
二:實現
我們通過一個指令碼來將這些檔案根據日期來分開儲存,指令碼如下:
#檔案所在的路徑 xdrBasePath=‘/data/test‘ echo ‘xdr檔案根路徑:‘${xdrBasePath} for file in ${xdrBasePath}/*.txt.gz; do ##截取檔案裡面的日期資訊 #1,擷取檔案名稱.包含尾碼 filename=$(basename $file) echo ‘檔案名稱:‘${filename} #2,截取時間:TSMTPP2735D20170517142005E981.txt.gz timeyear=${filename:11:4} timemonth=${filename:15:2} timeday=${filename:17:2} #echo ‘解析出的到年的時間:‘${timeyear} #echo ‘解析出的到月的時間:‘${timemonth} #echo ‘解析出的到日的時間:‘${timeday} yeardirpath=${xdrBasePath}/${timeyear} monthdirpath=${yeardirpath}/${timemonth} daydirpath=${monthdirpath}/${timeday} #echo $yeardirpath #echo $monthdirpath #echo $daydirpath #判斷檔案夾是否存在,不存在就建立 if [ ! -e ${yeardirpath} -o ! -d ${yeardirpath} ]; then mkdir ${yeardirpath} fi if [ ! -e ${monthdirpath} -o ! -d ${monthdirpath} ]; then mkdir ${monthdirpath} fi if [ ! -e ${daydirpath} -o ! -d ${daydirpath} ]; then mkdir ${daydirpath} fi #將檔案移動到改目錄下 mv -f ${xdrBasePath}/${filename} ${daydirpath} #echo ‘-------------------------‘ done |
這麼一來,就會將檔案“TSMTPP2735D20170517142005E981.txt.gz”移動到“/data/test/2017/05/17”路徑下去。
if語句解釋如下:
與:-a,當指定多個條件時,預設為與關係
或:-o
非:!,這是個單目操作符
檔案是否存在: -e
檔案是否是目錄: -d
三:添加到系統調度裡面
1,查看crontab服務狀態
2,啟動服務
| /sbin/service crond start |
3,重啟服務
| /sbin/service crond restart |
4,關閉服務
5,查看調度任務
6,編輯調度任務
7,刪除所有調度任務
注意:如果只是刪除某一個調度任務,請使用“crontab -e”
8,查看調度日誌
調度編輯舉例:
1,執行調度編輯“crontab -e”
2,在開啟的vi中添加調度任務資訊,例如每我分鐘執行一次上面的指令碼
| */5 * * * * /data/movetest.sh |
本文出自 “因簡單而自在” 部落格,請務必保留此出處http://dengshuangfu.blog.51cto.com/8794650/1927444
使用Linux指令碼移動檔案