2014-03-14 82 views
1

我想在我的主機上刪除一個文件夾及其內容,如果它超過一天。問題是,我沒有如何使用linux cron作業來做這件事。我也應該說,我已經看過谷歌,什麼都沒有出現。我認爲這是一個非常簡單的問題,請幫助我。由於如何刪除比一天早的文件夾? (Cron Job)

+0

的可能重複(HTTP [-mtime文件超過1小時年長。 com/questions/543946/mtime-files-older-1-hour) – paxdiablo

+1

這是用於文件,而不是文件夾。 –

+0

然後你使用'-type d'而不是'-type f'。底線是,你正在看'find -mtime ...'。 – paxdiablo

回答

2

這應做到:

find /path/to/dir -maxdepth 0 -ctime +1 -exec rm -fr {} + 

但要小心,和第一的cron外測試,沒有-exec一部分,所以你不要意外刪除別的東西。

+0

我會修改什麼來更改天數? '+ 1'部分?這也是在網絡服務器上運行。 –

+0

我正在使用cpanel,因爲目錄會像'public_html/website/uploads'一樣嗎? –

+0

@KronoFiles真的取決於您的託管服務提供商。如果某個命令在cron中輸出,則cron通常會通過電子郵件發送要使用的輸出。你可以運行'find public_html/website'而不用任何其他參數來打印那裏的所有文件和子目錄,它應該通過電子郵件發送給你。基於這個輸出,你可以找出正確的使用路徑。 – janos

0

我假設你想刪除一個包含其所有內容的文件夾,只要該文件夾中的最新文件在過去24小時內沒有被更改過。

這裏是一個解決方案,它可能不是最優雅:

首先,使用此命令刪除其修改時間早於24小時內所有文件:

find /path/to/the/folder -type f -mtime +0 -print0 | xargs -0 rm 

然後,試着刪除文件夾內的所有文件夾,包括文件夾本身:

find /path/to/the/folder -depth -type d -print0 | xargs -0 rmdir 

這隻會刪除不包含任何文件的文件夾。也就是說,如果文件在第一步之後仍然存在(因爲它們的修改時間戳不早於24小時),那麼您的文件夾(可能包含子文件夾)將保留。如果cronjob重複運行,那麼在某個時間點 - 只要文件夾內沒有小於24小時的文件,那麼您的文件夾及其所有內容都將被刪除。

如下你可以把這個變成一個文件/etc/cron.d/folder-cleanup

*/5 * * * * root find /path/to/the/folder -type f -mtime +0 -print0 | xargs -0 rm ; find /path/to/the/folder -depth -type d -print0 | xargs -0 rmdir 

這樣,你的清理過程將運行每5分鐘。

這種方法的缺點是您的文件夾將逐步消失。我不確定這是否是您需要的。

+0

它通過電子郵件發送給我這個'find:/public_html/kronofiles.com/uploads/1/':沒有這樣的文件或目錄 rmdir:丟失操作數 嘗試rmdir - 幫助'以獲取更多信息.' –

+0

您可以運行'find/public_html/kronofiles.com/uploads/1 /'並將輸出粘貼到http://pastebin.com/並告訴我Pastebin鏈接? –

0

首先查看哪些文件將被刪除:

find /path/to/dir -type d -mtime +1 -print 

然後,一旦準備好執行://計算器:

find /path/to/dir -type d -mtime +1 -print0 | xargs -0 rm -r 
相關問題