Использование find для удаления всех подкаталогов (и их файлов) - PullRequest
18 голосов
/ 05 мая 2011

Я уверен, что это прямо и где-то ответил, но мне не удалось найти то, что я искал. По сути, я пытаюсь запустить скрипт cron для очистки содержимого данного каталога каждые 7 дней. До сих пор я пробовал следующее,

find /myDir -mtime 7 -exec rm -rf {} \;

При этом также удаляется родительский каталог myDir, который мне не нужен. Я тоже пробовал,

find /myDir -type f -type d -mtime 7 -delete

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

fnd /myDir -type d -delete

, который удалил все, кроме родительского каталога, как мне нужно. Однако появилось предупреждающее сообщение: «1010 *

относительный путь потенциально небезопасен

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

Большое спасибо. =) * * 1 018

ОБНОВЛЕНИЕ: Я решил пойти на следующее,

find /myDir -mindepth 1 -mtime 7 -delete

На основании того, что я узнал от всех, кто ответил. Еще раз большое спасибо всем вам.

Ответы [ 3 ]

14 голосов
/ 05 мая 2011

Попробуйте:

find /myDir -mindepth 1 -mtime 7 -exec rm -rf {} \;
7 голосов
/ 05 мая 2011

Как насчет

cd myDir/ ; find . -type d -delete

при условии, что вы запускаете его из родительского каталога myDir.

Если вы не можете гарантировать, что myDir существует, тогда это безопаснее:

cd myDir/ && find . -type d -delete
6 голосов
/ 17 января 2013

find /myDir -mindepth 1 -mtime 7 -delete

, вероятно, должно быть

find /myDir -mindepth 1 -mtime +7 -delete

(или, возможно, mtime +6).+ означает вещи 7 дней или старше, а не ровно 7 дней.

...