# mkdir docspa
# find . -type d -name "doc" -exec rm -rf {} \; #雖然此處報錯,卻刪除成功圖片
# echo $?file
緣由分析
首先了解一個知識點,很容易被忽略,find會查找指定路徑下的目錄和文件及目錄的子目錄和子文件; find命令在查找第一個doc目錄就將此路徑傳遞給-exec後面的命令執行操做,從下面的這個圖片能夠看出,在查找到第一個doc路徑後打印(-print)該路徑,而後將該路徑傳遞給後面的echo命令,那麼也會再次打印該路徑,故打印兩次,執行完-exec後面的命令後,繼續執行find命令,在剛纔查找到doc路徑下查找下一個名稱爲doc的命令。搜索
故,在執行命令: # find . -type d -name "doc" -exec rm -rf {} \; 將查找到的目錄傳遞給rm進行刪除,而此時doc目錄已經刪除,find又要在已刪除的doc目錄下進行繼續搜索是否有名稱爲doc的目錄,因已刪除,故報錯(find: `./doc': No such file or directory)方法
總結:
find將結果傳遞給-exec後的命令,而後繼續執行find再次查找子目錄im
find命令會查找指定路徑下的文件和目錄及目錄下的子文件和目錄。總結
解決方法
# find . -type d -name "doc" | xargs rm -rfimg
圖解: