Я пишу программу резервного копирования, и мне нужно выполнить команду bash, чтобы удалить самый старый каталог в определенном каталоге.

Я нашел эту команду, чтобы напечатать самый старый каталог:

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

И эта команда для удаления каталога и всего его содержимого:

rm -rf [oldest directory name]

Как я могу объединить эти два, чтобы удалить самую старую папку?

1 ответ1

0

Это должно работать с любым путем (спасибо @ 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 %q на rm -rf --

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .