2012-09-12 72 views
3

我正在處理項目以自動刪除比一天早的特定目錄。我有下面這段代碼工作的:查找:在刪除目錄後無法查看目錄錯誤消息

find Directory/ -type d -name "Directory.To.Delete.*" -mtime +1 -exec rm -rf {} \; 

運行良好並刪除目錄(內容)如預期,但它總是以錯誤結束:

 
find: cannot chdir to Directory/ : No such file or directory 

是否有辦法運行此代碼而不面臨此錯誤?我不明白爲什麼這段代碼在刪除目錄後試圖chdir。

回答

6

-exec之前加-prune;將停止find進入比賽的目錄:

.... -mtime +1 -prune -exec ... 
1

添加-depth型d之前也將停止進入匹配的目錄中找到。

# mkdir 1 
# mkdir 2 
# touch -d yesterday 1 
# find . -depth -type d -mtime +0 -exec rm -rf {} \; 
# ls 
2 

從人的發現:

-prune True; if the file is a directory, do not descend into it. If -depth is given, false; no effect. Because -delete implies -depth, you cannot usefully use -prune and -delete together.