我是shell腳本的新手,任何人都可以幫忙嗎?我想要將文件夾中的腳本從當前日期刪除回10天。 腳本的樣子:在Unix中使用shell腳本刪除超過10天的文件
2012.11.21.09_33_52.script
2012.11.21.09_33_56.script
2012.11.21.09_33_59.script
該腳本將每10天用crontab的運行,這就是爲什麼我需要的當前日期。
我是shell腳本的新手,任何人都可以幫忙嗎?我想要將文件夾中的腳本從當前日期刪除回10天。 腳本的樣子:在Unix中使用shell腳本刪除超過10天的文件
2012.11.21.09_33_52.script
2012.11.21.09_33_56.script
2012.11.21.09_33_59.script
該腳本將每10天用crontab的運行,這就是爲什麼我需要的當前日期。
find
是這類任務的常用工具:
find ./my_dir -mtime +10 -type f -delete
解釋
./my_dir
你的目錄(替換w第i個你自己的)超過10天-type f
年長-mtime +10
文件只-delete
並不令人意外。 刪除它執行整個命令之前測試你的find
濾波器和照顧是./my_dir
的存在是爲了避免壞的驚喜!
如果你能負擔得起通過文件數據的工作,你可以做
find -mmin +14400 -delete
致[匿名編輯](http://stackoverflow.com/review/suggested-edits/5805137):如果'find'具有'-rm-rf'選項,哪個版本? – glglgl
只是調味了shell腳本來刪除舊文件
#!/bin/bash
timestamp=$(date +%Y%m%d_%H%M%S)
path="/data/backuplog"
filename=log_back_$timestamp.txt
log=$path/$filename
find $path -name "*.txt" -type f -mtime +7 -print -delete >> $log
echo "Backup:: Script Start -- $(date +%Y%m%d_%H%M)" >> $log
START_TIME=$(date +%s)
... code for backup ...or any other operation ....
END_TIME=$(date +%s)
ELAPSED_TIME=$(expr $END_TIME - $START_TIME)
echo "Backup :: Script End -- $(date +%Y%m%d_%H%M)" >> $log
echo "Elapsed Time :: $(date -d 00:00:$ELAPSED_TIME +%Hh:%Mm:%Ss) " >> $log
的代碼基礎上sputnick答案,並增加了一些更多的東西。
Hi @MarcoZen。我有2個'find'和'delete'命令寫入相同的'$ log'。爲什麼它會創建三個日誌文件,前兩個日誌文件沒有內容,最後一個文件的文件列表已被刪除。我該怎麼做才能使find和delete命令不會生成多個文件? –
@FokwaBest - 可以創建另一個日誌文件嗎?時間戳的bcos?你是否完全使用上面的代碼?你可以粘貼我檢查嗎? – MarcoZen
嗨@MarcoZen,我不得不刪除'_%H%M%S'。對於小文件,只生成一個日誌文件,但當要刪除的文件數量很大時,會生成多個日誌文件,其中包含不同的'_%H%M%S'。刪除這部分後,所有內容都寫入一個文件。 –
你有沒有^ h看看'男人約會'? – Jens
您是否需要根據文件名或文件修改時間進行刪除? – Barmar
我需要一個完整的腳本:)我找到了一個exapmle,但我不知道這是好的:find/home/scripts /。 -name'* .script'-mtime +10 -exec rm -rf'{}'\; – Steve88