Files
是否可以在恆定時間內刪除目錄?
我通常使用 . 一次刪除整個目錄
rm -rf
。我剛才注意到,目錄越大(遞歸計算),這需要的時間越長。類 Unix 系統是否公開了另一種方法來刪除以恆定時間執行的目錄?似乎應該可以“直接”刪除目錄,而無需觸及現在無法訪問的內容。
文件系統是否有一些特性迫使您遞歸地遍歷目錄的內容以刪除目錄本身?
刪除目錄時,必須遞歸刪除其內容。為什麼會這樣?
簡化我們可以說«目錄»是文件,其中包含對列表。如果您只是“釋放驅動器上的目錄塊”,會發生什麼?
讓我們考慮刪除正常文件。程序(如
rm
)呼叫unlink()
系統呼叫。作業系統(更具體地說,文件系統驅動程序)檢查硬連結的計數(filename
在上一段的目錄中)。如果為零且文件未打開,則可以物理刪除。因此,我們知道如何刪除文件。現在讓我們再看看目錄刪除。當您只釋放塊時,您不會
unlink
在其中創建文件,也不會減少目錄中任何文件的硬連結計數器。而對於子目錄、子子目錄等中的任何文件,結論是什麼?確切地說,我們需要對unlink
我們刪除的目錄中的所有文件執行此操作,因為我們不希望在文件系統中獲得不可刪除的垃圾。因此,您可以使用@SYN 的解決方案(
rm
在後台執行),但無法在恆定時間內刪除目錄。