PALMisLIFE 討論區

標題: [求助] 求助unix shell 定期刪除檔案的語法 [列印本頁]

作者: bibibo    時間: 2005-11-14 15:22
標題: [求助] 求助unix shell 定期刪除檔案的語法
不曉得站內有沒有人在unix上有開發的經驗, 想求助一下shell 的語法 B)

請教若用shell的方式, 要刪除某個路徑下6個月前的檔案(檔名的組成方式為yyyymmdd.log), shell command要如何寫? B)
作者: 阿輝    時間: 2005-11-14 15:36
標題: Re: [求助] 求助unix shell 定期刪除檔案的語法
用 PHP 作 script 的話可以嗎... XDXD
作者: double    時間: 2005-11-14 15:46
標題: Re: [求助] 求助unix shell 定期刪除檔案的語法
我很久沒寫了,手邊現在也沒有Unix的機器做驗證。
不過我想你可以用find找出時間是六個月前的檔案,再redirect檔案名稱到rm即可。
作者: IF    時間: 2005-11-14 15:49
標題: Re: [求助] 求助unix shell 定期刪除檔案的語法
我剛寫了隻 java 的小程式,是在 Console 下刪特定路徑下的特定日期之前的檔案,。
你要不要拿去修改一下?

要改很簡單,也可以設定 Linux shell 定期執行該程式。

要的話就 PM 我,我傳 Source Code 給你囉..
作者: barista    時間: 2005-11-14 16:11
標題: Re: [求助] 求助unix shell 定期刪除檔案的語法
我也很久沒寫了,這是從機器 root 的 crontab 裡撿出來的。 ;-)

10 1 * * * (cd /tmp;find . ! -name . -type f -mtime +2 -print -exec rm -f {} \;) 1>/dev/null 2>&1

每天凌晨 1:10 把 /tmp 內超過兩天的舊檔砍掉,6 個月就改用 -mtime +180
其餘細節請用 man find 及 man crontab 查詢。

根據你檔案的 Naming Rule 也可以倒算日期依檔名來判斷,不過我想不會比較簡單。

PS:
如果你不用 crontab 那更簡單:
  cd /tmp
  find . ! -name . -type f -mtime +2 -print -exec rm -f {} \;

[ Last edited by barista on 2005-11-14 at 16:15 ]
作者: yuyudiabo    時間: 2005-11-14 16:36
標題: Re: [求助] 求助unix shell 定期刪除檔案的語法
find /tmp -name "*.log" -mtime +180 -print -exec rm {} \;
基本上這樣就可以殺掉你要的東東了(附檔名.log and modify >180天), 要自動run 就放在crontab
怎麼放? 去man一下就知道了...
作者: MelancholyLee    時間: 2005-11-14 16:59
標題: Re: [求助] 求助unix shell 定期刪除檔案的語法
vi removeFile.sh
file content  :
#!/usr/bin/ksh
find /tmp -name "*.log" -mtime +180 -print -exec rm {} \;
chmod 722 removeFile.sh
crontab -e
10 1 * * * /yourdir/removeFile.sh 1>/dev/null 2>&1
每天凌晨 1:10 會執行
bye the way, ksh -x  removeFile.sh  可以看到此shell script 執行的結果..
作者: bibibo    時間: 2005-11-14 21:37
標題: Re: [求助] 求助unix shell 定期刪除檔案的語法
謝謝各位前輩
站內真是高手如雲
command搬過來改一改就work了
真的非常感謝




歡迎光臨 PALMisLIFE 討論區 (http://f.pil.tw/) Powered by Discuz! X2.5