如何刪除目錄中最舊的目錄?

如何刪除目錄中最舊的目錄?

我正在編寫一個備份程序,我需要執行bash命令來刪除特定目錄中最舊的目錄。

我發現這個命令列印最舊的目錄:

find -type f -printf '%T+ %p\n' | sort | head -n 1

這個指令刪除一個目錄及其所有內容:

rm -rf [oldest directory name]

如何將這兩個資料夾結合起來以刪除最舊的資料夾?

答案1

這應該適用於任何路徑(感謝@StéphaneChazelas 的head詭計)並且應該與 POSIX 相容(格式化以提高可讀性):

printf %q "$(
    find . -type d -printf "%T+ %p\0" |
    tr '\0\n' '\n\0' |
    sort |
    head -n 1 |
    tr '\0\n' '\n\0' |
    sed -e 's/^[^ ]\+ //')"

若要實際刪除目錄,請替換printf %qrm -rf --

相關內容